Aqueles de vocês que tiveram aulas com o prof. Clóvis devem se lembrar dos infinitos discursos sobre padrões de projeto: aquelas padronizações que são utilizadas em código para “simplificar” a nossa vida e tornar o mundo mais bonito. Como o próprio Java e seus infinitos frameworks com um milhão de padrões de projeto estão aí para provar, muitos vezes o que você ganha em termos de “reuso” de código com o uso excessivo destes padrões, acaba perdendo em código de configuração, complexidade e dificuldade de debug. No final seu código acaba ficando maior, mais emaranhado, e só pode ser compreendido por especialistas na tecnologia/framework utilizado.
Vejam só este artigo: Design Pattern Berserk . Nele o author consegue a proesa de usar uns 7 padrões de projeto num hello world, vejam que beleza que fica. Quem entender todo o código, de 160 linhas, ganha um chocolate!
Está é a beleza do Rails: implementa os padrões de projeto mais importantes para a web (MVC e ActiveRecord), sem adicionar complexidade (por causa do infinitos códigos de configuração e housekeeping). Na medida certa, com simplicidade. Sem exargerar como o Java e todos os seus feijões mágicos.
luiz.laydner respondeu em 30 Mar 2007 às 8:49 #
Achei ridículo esse cara implementando um hello world com padrões de projeto e chegando a conclusão com isso de que eles são ruins. Ele força a barra implementando 7 padrões de projeto pra complicar algo que deveria realmente ser simples e disso conclui que padrões de projeto aumentam a complexidade do código!! Ridículo!!
O problema não está exatamente nos padrões de projeto, que são soluções testadas para problemas recorrentes e ajudam sim a criar sistemas com uma estrutura mais simples e elegante. O problema está em utiliza-los indiscrimidamente, usar só por usar, sem conhecimento e sem necessidade.
Certamente é grande estupidez dar um trator de 4000cv para uma criança fazer um castelinho de areia na praia quando uma pá de plástico resolveria.
A questão é: a ferramenta deve ser adequada ao problema, não o contrário!!
Bernardo Pádua respondeu em 30 Mar 2007 às 17:53 #
Mas o fato é que o cara usou os padrões corretamente, ele não errou (ele tem o conhecimento). O que ele mostrou é justamente o que você disse: eles devem ser utilizados com cautela, pois para coisas mais simples (e consequentemente mais comuns) eles vão dificultar sua vida, em vez de ajudar.
Este é o problema do Java, na minha opinião: tudo no Java é feito tendo-se como base o uso em coisas extremamente complexas, e ignorando o fato de que a maioria das coisas são simples (mesmo em projetos grandes). Para mim, muitas vezes, o que eles fazem é semelhante ao que o cara fez com o Hello World (em proporções mais exargeradas, obviamente).
Nada é unanimidade, no entanto, nem mesmo OO. Muitos programadores são contra OO, e fazem coisas bem complexas com C simples. (Ex.: os caras mais hardcores do Linux).
Eu tenho certeza de que OO nem sempre simplifica o código ou a tarefa de programação, muitas vezes faz o contrário.