Padrões de projeto: pra que servem?

Uma dúvida recorrente de quem está aprendendo programação: vale a pena usar padrões de projeto e orientação a objetos? A resposta tem 1 e meia razões.


Essa é uma dúvida que aparece bastante, principalmente com quem está começando. A pessoa aprende HTML, CSS, as primeiras coisas, e de repente se depara com orientação a objetos e padrões de projeto, tipo o MVC.

E a pergunta que vem na sequência quase sempre é: "Mas por que complicar? Eu consigo fazer a mesma coisa de forma muito mais simples, código linha por linha, tudo junto, e funciona."

Faz sentido a pergunta. Mas tem uma resposta bem direta pra isso.

1 e meia razões pra usar padrões de projeto

Quando eu pensei na melhor forma de responder essa questão, cheguei numa conclusão simples: padrões de projeto servem pra uma coisa e meia. Vou explicar as duas.

Razão 1: facilitar a manutenção

O próprio nome já entrega. Padrão de projeto, ou seja, algo padronizado. Quando o seu código segue um padrão, qualquer pessoa que entende aquele padrão consegue olhar pro código e entender o que está acontecendo.

Pensa no cenário mais comum: você escreve um sistema hoje, daqui a dois anos precisa mexer nele de novo. Se o código estiver num padrão conhecido, você vai saber pelo menos onde está o que precisa ser alterado. Se estiver fora de qualquer padrão, vai demorar o dobro do tempo só pra entender o que você mesmo fez.

E o mesmo vale pra outra pessoa que pegar o seu código. Se estiver padronizado, o esforço de compreensão é muito menor.

Essa é a principal razão. Organização e manutenção facilitada, tanto pra você quanto pra quem vier depois.

Razão 1 e meia: eficiência do código (mas só em alguns casos)

Aqui está o "meia" da equação. Essa segunda razão não se aplica em todo cenário, por isso não é uma razão inteira.

Em sistemas pequenos, sites menores, a programação estrutural realmente é mais eficiente. Menos código, menos processamento, mais direto ao ponto. Usar orientação a objetos ou um padrão como o MVC num projeto pequeno vai exigir mais estrutura pra fazer a mesma coisa que cinco linhas fariam.

Agora, em sistemas maiores, com muitas funcionalidades e uso intenso de recursos, o cenário muda. Orientação a objetos exige um processamento extra, mas a reutilização de código compensa. Um objeto criado uma vez pode ser usado em vários pontos do sistema, o que no final reduz o processamento geral.

Então essa questão de performance usando padrões só faz diferença quando o sistema é maior ou quando você usa recursos mais avançados. Em sistemas pequenos, o ganho não é notável, nem a olho nu.

Quando usar então?

Usa padrões de projeto e orientação a objetos quando fizer sentido, ou seja, quando o sistema for crescer, quando mais pessoas forem trabalhar no código, quando a manutenção for importante.

Não usa por modismo ou porque "todo mundo usa". Usa porque facilita a vida no longo prazo.

E um dos padrões mais famosos que vale aprender cedo é exatamente o MVC, Model-View-Controller. É um bom ponto de partida pra entender como organizar um sistema de forma que faça sentido pra todo mundo envolvido.