Os chamados Padrões de Projeto de Software são simplesmente técnicas aplicadas no desenvolvimento de sistemas visando simplificar a escrita e organização de código, facilitando a compreensão dos problemas resolvidos e futuras alterações.
“Mais importante do que entender como é a implementação de um padrão de projeto, é entender a sua motivação: em quais casos faz sentido e deve ser aplicado.” (ANICHE)
Estudando pelo curso Design Patterns Java: Boas práticas de programação na plataforma online de ensino Alura, as seguinte questões foram feitas ao final:
Usar padrões 100% do tempo é o ideal? Quais são as vantagens e desvantagens?
Na minha opinião, conhecer as soluções recorrentes é necessário para ajudar na análise e decidir se deve ser aplicada no contexto do problema: linguagem de programação; arquitetura utilizada; conhecimento dos desenvolvedores; facilidade de manutenção, etc. Ou seja, é uma grande vantagem aplicar soluções comprovadamente úteis principalmente no desenvolvimento orientado a objetos.
Porém utilizar padrões nem sempre facilitarão a solução podendo forçar uma implementação mais complexa do que o necessário, adicionando: classes; interfaces e métodos diversos; com pouca reusabilidade e funcionalidade real. Ás vezes, um simples condicional, enumeration ou constante faz o código mais legível e efetivo.
Segundo Guerra no livro Design Patterns com Java, a modelagem de uma aplicação é uma questão dinâmica que evolui a medida que o desenvolvimento do software acontece. Apesar da modelagem das classes da aplicação a partir de diagramas acontecer antes do inicio das implementações, muitas vezes os problemas aparecem somente depois. Sendo assim, tão importante quanto saber como utilizar os padrões na modelagem inicial, é saber como refatorar um código existente para uma solução que utilize um determinado padrão.
“A refatoração constante do código é hoje uma das bases para a manutenção de sua qualidade ao longo do projeto.” (GUERRA, 2013)
Os padrões fornecem a flexibilidade necessária para refatorações futuas, porém em um problema simples de resolver, talvez o uso não faça sentido; o código vai apenas ficar mais complicado. Segundo Aniche, padrões de projeto são mais uma ferramenta que devem ser um meio para se chegar à solução, e não o objetivo principal.
Finalizando, recomendo o Leonardo Leitão “filosofando sobre padrões” no vídeo abaixo.
Referências e Links
ANICHE, Maurício. Design Patterns Java I: Boas práticas de programação. Curso online na plataforma Alura. Disponível em: https://www.alura.com.br/curso-online-design-patterns.
GUERRA, Eduardo. Design Patterns com Java: Projeto orientado a objetos guiado por padrões. Disponível em: https://www.casadocodigo.com.br/products/livro-design-patterns.
LEITÃO, Leonardo. Padrões de Projeto. Curso online na plataforma COD3R. Disponível em: http://www.cod3r.com.br/portal/courses/padr%C3%B5es-de-projeto-14.