Design Patterns - Identificando e Aplicando padrões


Neste artigo vou apresentar algumas recomendações baseadas na experiência própria para tentar ajudar quem esta começando agora no desenvolvimento de software a identificar e utilizar padrões de projetos.

Para iniciantes, o aspecto mais desafiador dos princípios e padrões de projetos é como aplicá-los em uma aplicação real.

Embora não exista uma técnica simples para fazê-lo, vou tentar fornecer algumas dicas baseadas em experiência pessoal com a esperança de que elas possam ajudar justamente que esta começando.

Muitos desenvolvedores após lerem um livro de padrões, caem na armadilha de tentar aplicar padrões para tudo que estão fazendo, conseguindo exatamente o oposto do que os padrões se propõem : fazer as coisas simples.

Não existe mágica, a melhor maneira de aplicar padrões é identificar o problema fundamental que você está tentando resolver e procurar uma solução que se encaixa ao seu problema levando em conta o seu cenário que pode ser uma aplicação web, desktop, com acesso a dados, etc.

Assim vamos começar...

Como e quando usar os padrões de projeto

1- Você não é obrigado a usar os padrões de projeto em todos os seus projetos

Os iniciantes geralmente acreditam que todo aplicativo deve usar padrões de projeto. Isso é não é necessário. Embora os padrões de projeto sejam úteis na solução de problemas conhecidos, é preciso determinar se usá-los acrescenta complexidade indevida ao projeto.

Por exemplo, se você estiver escrevendo um pequeno projeto, como um script, que será usado apenas para uma situação não crítica aplicar padrões de projeto pode ser um exagero.

2- Os princípios SOLID são essenciais

Mesmo que você não utilize padrões de projetos em uma aplicação, com certeza, você usará um ou mais de um dos princípios SOLID.

Isso ocorre porque esses princípios são tão fundamentais ao design orientado a objetos que mesmo na definição de um simples conjunto de classes você pode aplicar os conceitos definidos nos princípios SOLID.

Assim, conhecer os princípios SOLID é um dos fundamentos básicos que todo o desenvolvedor sério tem que ter como meta.

3- Não use muitos padrões de uma vez em um projeto

Outro erro que os iniciantes podem cometer é colocar muitos padrões em um único projeto. Isso não apenas aumenta a complexidade do projeto, mas também pode adicionar erros.

Tente desenvolver o hábito de identificar padrões que podem ser usados em um sistema. Você vai perceber que vai acabar usando mais alguns padrões do que outros. Alguns padrões podem se tornar seus padrões favoritos.

Desenvolver esse hábito exige prática regular, e você tem que começar de algum lugar. Com base nessa prática, você criará experiência durante um certo período de tempo.

4- Vá com calma, dê um passo de cada vez

Se você considerar o catálogo GoF e o catálogo P do EAA - Catalog of Patterns of Enterprise Application Architecture ,  juntos, acabará tendo um conjunto relativamente grande de padrões de projeto para aprender.

Aprender todos esses padrões é um processo gradual e contínuo. Eu sugiro que você primeiro se sinta à vontade com os Padrões GoF e, em seguida, passe para os padrões do cátalogo P do EAA.

Um passo de cada vez, primeiro os princípios SOLID, depois os padrões GoF e depois vem os padrões P do
EAA.

5- O exercício leva à prática

Outra dificuldade que os iniciantes enfrentam está em relembrar padrões enquanto estuda os requisitos do projeto. Novamente, isso requer alguma prática.

Um bom exercício é criar dicas práticas de padrões de projeto e anotá-las com ajuda de figuras, palavras-chave para ajudar a memorizar os padrões e seus conceitos.

Procure estudá-los com afinco aproveitando o tempo livre. A constante reflexão sobre os padrões ajuda a mantê-los frescos em sua mente.

6- Aprenda com a manutenção de código

Lembre-se de que os princípios e padrões SOLID não são apenas úteis durante o desenvolvimento inicial da base de código, mas também são de grande valor ao estender ou mantendo a base de código existente.

Assim a manutenção de código também requer a utilização de boas práticas.

7- Aprenda com os especialistas

Estude o código escrito por especialistas e por programadores mais experientes que usam os padrões de projeto e os principíos SOLID.

Isso ajudará você a entender como desenvolvedores estão aplicando-os e você aprenderá a técnica no processo.

8- Faça a coisa certa

Repito mais uma vez : você não é obrigado a usar os padrões de projeto em todos os seus projetos.

Se você chegou a uma solução para um problema que é simples, clara e de fácil manutenção, mas ela não se encaixa em nenhum dos 23 principais padrões de projeto catalogados, não se apavore, você fez a coisa certa.

Se você seguir outro caminho, apenas por modismo, isso pode complicar o seu projeto.

Qual padrão de projeto usar ?

Para saber qual padrão de projeto você pode usar e como aplicar o modelo ao seu problema específico é importante compreender e utilizar alguns conceitos:

  1. Você não pode aplicar padrões sem conhecê-los bem. O primeiro passo a dar é expandir o seu conhecimento e estudar os padrões e princípios na forma concreta e abstrata. Você pode implementar padrões de projetos de muitas formas e quanto mais você conhecer sobre as diferentes implementações possíveis mais você irá compreender sobre o real objetivo do padrão e de como um padrão pode possuir diferentes implementações.
  1. Você precisa introduzir a complexidade de um padrão de projeto  no seu aplicativo ? É comum para os desenvolvedores tentar usar um padrão para resolver todos os problemas quando eles estão estudando padrões. Você sempre precisa parar e pesar o tempo inicial necessário para implementar um padrão e o benefício que isso vai dar. Lembre-se do princípio KISS: Keep It Simple, Stupid ou seja: Mantenha as coisas simples.
  1. Generalize o seu problema, identifique os problemas que você está enfrentando de forma mais abstrata. Veja a forma como a intenção de cada padrão e princípio está escrito, e veja se o seu problema se encaixa com o problema que um determinado padrão ou princípio está tentando resolver. Lembre-se que padrões de projetos são soluções de alto nível, tente abstrair o seu problema, e não se concentre demais nos detalhes de seu problema específico.
  1. Olhe para os padrões de natureza semelhante e para os padrões no mesmo grupo. Só porque você utilizou um padrão antes não significa que ele será sempre a escolha correta quando for resolver um problema.
  1. Encapsule o que varia. Olhe para o que provavelmente vai mudar com a sua aplicação. Se você sabe que um algoritmo vai mudar ao longo do tempo, olhe para um padrão que vai ajudar você a alterá-lo sem afetar o resto de sua aplicação.
  1. Depois de ter escolhido um padrão de projeto, esteja certo em usar a linguagem de seu padrão com a linguagem do domínio na nomenclatura do seu projeto. Por exemplo, se você está usando o padrão Strategy para fornecer uma solução procure utilizar nomes adequados usando um vocabulário padrão em comum com a linguagem de seu domínio, isso tornará o seu código mais legível e compreensível para outros desenvolvedores com conhecimento de padrões.
  1. Quando se trata de padrões de projeto, não há substituto para estudar. Quanto mais você saber sobre cada um dos padrões, melhor equipado você estará em aplicá-los. Procure captar a intenção de cada padrão para refrescar sua memória para quando você tiver um problema e estiver procurando uma solução.

Estes são alguns conselhos práticos que podem ajudar você a melhor compreender como usar e aplicar os padrões de projeto.

Agora, para que isso se concretize existe um caminho que você tem que trilhar : sujar as mãos; afinal programar se aprende programando.

"Vós me chamais Mestre e Senhor, e dizeis bem, porque eu o sou.
Ora, se eu, Senhor e Mestre, vos lavei os pés, vós deveis também lavar os pés uns aos outros.
Porque eu vos dei o exemplo, para que, como eu vos fiz, façais vós também."
João 13:13-15

Referências:


José Carlos Macoratti