Вообще каждый девелопер должен прежде чем что-то релизовать, задать себе 3 вопроса:
1) А не херню ли я делаю?
2) А не велосипед ли я мастерю? ( т.е. - ну погугли сначала типичные решения, если это как-то generic вопрос, наверняка его уже решили за тебя)
3) Сможет ли кто-то понять потом то, что я сейчас делаю? (читая мой код)
Вот как-то следуешь этому простому правилу, так сразу жизнь налаживается, почему-то