Olá bom dia para todos nessa deliciosamente CINZA E CHUVOSA MALDITA SEGUNDA-FEIRA.
Enfim … :mrgreen:
Minhas dúvidas são muito simples:
O quão genéricas devem ser as classes num projeto? Até que ponto o ideal é manter a camada controller genérica, tratando as peculiaridades na view?
Ou estou pensando tudo ao contrário? O ideal é fazer classes bem específicas, com nomes e funções bem específicas (apesar de uma grupo delas poder ter funcionalidades idênticas)?
Até onde deve ir o esforço para manter as coisas funcionando para qualquer situação? Ou um amontoado grande de classes resolve a coisa?
Qual das formas é melhor para trabalhar a curto prazo? E a longo?
Filosofia XP:
“pense simples”.
Resolva o seu problema de hoje. Amanhã resolva o problema de amanhã.
Tente fazer classes refatoráveis, mas não genéricas.
Se conseguir isto, terá as melhores classes a curto,
e refatorando… terá as melhores classes a médio e longo prazo.
E manda para o espaço aquelas horas idiotas de análise
Exato. É melhor ter primeiro um código que funciona pra um caso, depois pra dois casos, depois pra todos os casos. Use a “regra dos três”.
Se vc vê código parecido em dois lugares, é indício de que existe uma abstração aí. Se vc vê em 3, é pattern: pode refatorar.
Eu sempre falo essas coisas e nunca é visível o caminho entre essas práticas todas e um código de qualidade. Mas ele existe, e está aí não pra ser visto, mas pra ser trilhado.
Você pode pensar: porra, terei que criar várias classes pequenas que fazem quase a mesma coisa!!! Quase a mesma coisa, pois se fizerem igual é melhor colocar em uma só.
Já me deparei com esse conceito, fiquei com preguiça mas criei várias classes. Só quando precisei dar manutenção que saquei que ficou mais fácil trabalhar só na classe específica.
No início meu Controller era gigantesco e depois dividi em vários sub-controles, o principal repassa o contexto para um sub-controle que resolve o problema que cabe a ele.
Isso ajuda também, mas não somente, quando vc pega o código de outra pessoa e quer entender, ou quando vc fica algumas semanas sem ver seu próprio código. É mais fácil entender uma classe que tem uma tarefa específica do que uma que tem todas as tarefas de um certo tipo.