Programando para interfaces.
A sitação do livro do GOF é excelente. Mas gostaria de
colocar um outro ponto de vista.
Hoje além da escola que prega o design antecipatório
de software (que é onde os design patterns entram)
existe uma outra escola de redesign constante (onde
refactoring entra).
Refactoring é exatamente redesign, é mudança de design
de código já escrito. Para que serve e para onde leva?

Segundo esta filosofia, você deve fazer sempre a coisa
mais simples que possa funcionar (desde que esta coisa
simples não contenha nenhum código duplicado).
Acredita-se que o melhor estado do software no momento
da mudança é: "simples". Se for simples é fácil de
mudar.
Contudo, se você fez a coisa mais simples que pudesse
funcionar, com certeza não criou interfaces e
flexibilidades desnecessárias (no momento).
Mas e agora quando chega a hora de inserir uma nova
funcionalidade, o código não está preparado! Não! Mas
está simples e agora é a hora de aplicar refactoring.
Se a nova funcionalidade não se encaixa bem no
software como está você faz as mudanças necessárias
para que ele ganhe um novo design, flexivel APENAS
onde é necessário.

Esta filosofia vem da idéia de que atualmente o mundo
dos negócios e das tecnologias muda muito rápido, e
você não pode prever TODAS as mudanças, por isso um
design antecipatório pode não flexibilizar pontos que
seriam necessários no futuro e ao mesmo tempo
adicionar complexidade por flexibilizar pontos que não
seriam necessários no futuro.

Estas idéias são extremamente práticas e hoje são
adotadas por várias metodologias de software
conhecidas como "Agile" (http://agilealliance.org)
Umas das metodologias mais conhecidas e bem
estruturadas nesta linha é eXtreme Programming ou XP.
(http://www.extremeprogramming.org/)

Para uma discussão nacional sobre o assunto, você pode
se tornar membro dos XPers, grupo nacional de estudo e
divulgação de XP (http://groups.yahoo.com/group/xpers)

O equivalente do livro do GOF (Design Patterns) no
pensamento de refactoring é:
Refactoring - Improving the Design of Existing Code
Autor: Martin Fowler.

Nota Final: Após o uso de refactoring, muitos design
patterns acabarão sendo aplicados. A vantagem é que
você os aplica apenas onde e quando são necessários e
não logo de cara onde você "PENSA" (ou PREVÊ) que
sejam necessários. (Os seres humanos não são muito
bons em previsões).

Ricardo Munhoz Santiago




__________________________________________________
Do You Yahoo!?
NEW from Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
http://geocities.yahoo.com/ps/info1

------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a