Estou lendo o guia prático do Extreme Programing.
Já lí sobre programação em pares, user stories etc… (devo estar lá pelo capítulo 11-12).
Foi ± por esse ponto que o autor falou que os críticos da XP diziam que ela não se preocupa com a arquitetura (o que, segundo o autor, não é verdade).
Pois bem, dei uma avançada no livro e dei uma lida no exemplo que eles mostram no final.
O que posso dizer é que realmente não vi nenhuma arquitetura ser planejada. Simplesmente, após o teste ser construído, as funionalidades eram adicionadas as classes.
Por exemplo, a classe cliente (entidade) possuia seus acessors e mutators normais (getter and setter) mas possuia também uma série de outros métodos, que incluiam até mesmo métodos auxiliares para persistência em XML.
Estou gostando muito da abordagem que a XP oferece, e muitas de suas práticas fazem bastante sentido quando o autor disserta sobre elas.
Mas… Quando lí os exemplos… cara. Realmente não concordei com a abordagem que eles usaram (quer dizer, o resultado final do sistema).
Será que não seria bom dedicar um mínimo de tempo para já se usar alguma arquitetura. Por exemplo, ter uma classe responsável por persistência e deixar as entidades apenas com os métodos get e set???
Acho que padronizar o código é muito importante (por exemplo, determinadas funcionalidades devem ser distribuídas em tais e tais classes). Dessa forma, os outros desenvolvedores já sabem onde procurar determinado trecho de código.
Não sei se estou me enganando, mas lembro de ter lido que o programador escolhe a forma de implementar a funcionalidade. Acho que isso pode desorganizar um pouco as coisas (não estou falando em que algoritmo ele usa, mas onde coloca seus métodos etc…).
Comentários? Alguém com uma maior experiência para falar do assunto? Alguém que já usou o modelo clássico e uma arquitetura em camadas e depois usou XP em algum outro projeto? Quais foram as diferenças que vocês notaram, arquiteturalmente falando?
::caraca meu português tá uma droga::