domingo, abril 26, 2020

Crítica; Design Patterns

Design Patterns é um livro clássico da programação orientada a objeto escrito por  Erich Gamma, Richard Helm, Ralph Johnson, e John Vlissides (conhecidos pela alcunha "Gang of Four"). Embora eu conhece (e já tenha usado) vários dos padrões, só agora eu li o livro.



A primeira surpresa que eu tive foi ver que os exemplos são em C++ e Smalltalk. Eu tinha certeza que seriam em Java... Uma consulta rápida na Wikipedia revelou que o livro foi publicado em 1994 e a primeira versão pública de Java foi disponibilizada em 1996. O resultado é que o entendimento dos exemplos ficou prejudicado, devido a problemas de legibilidade em C++ e o meu desconhecimento de Smalltalk.

A ideia central do livro é documentar um conjunto de "padrões de projeto" - soluções reutilizáveis para problemas corriqueiros. O primeiro capítulo da primeira parte explica as vantagens do uso dos padrões e a filosofia dos padrões apresentados, notadamente:

  • A programação baseada em interfaces para ter maior independência da implementação das classes,
  • A preferência pela composição (objetos dentro de outros) sobre a herança,
  • Utilização de associações dinâmicas ao invés de classes específicas. As aplicações são programadas com base em uma interface abstrata (sem implementação) e, em tempo de execução, uma classe que atende à interface é instanciada (da onde surgem as nem sempre bem faladas "factories").
O segundo capítulo da primeira parte apresenta um exemplo de uso de padrões: um editor de textos "WYSIWYG" (o que você vê é o que você obtêm). Desconfio que o termo é tão anacrônico quanto o exemplo.

A segunda parte do livro é a enciclopédica descrição de 23 padrões, agrupados em "Criacionais", "Estruturais" e "Comportamentais".

Uma crítica recorrente a este livro é que os padrões apresentados na verdade seriam formas de contornar limitações das linguagens utilizadas (notadamente do C++). Por exemplo o conceito de "iterador" (um mecanismo para processar sequencialmente os componentes de uma coleção de objetos) está presente nas linguagens modernas.

Veredito:  Como muitos "clássicos" (no sentido amplo"), um livro que merece ser conhecido mas que se mostrará enfadonho e anacrônico para muitos. Certamente existem livros mais modernos que tratam do mesmo tema com uma abordagem menos acadêmica e com exemplos mais próximos da realidade atual.


Nenhum comentário: