Estou comprando uns episódios da série do Clean Code do "Uncle Bob"
http://www.cleancoders.com/ e apesar de ser um pouco caro, 12US$ para ver somente online ou 18US$ cada episódio se for fazer download, acho que valeu a pena , pelo menos os vídeos sobre SOLID que vi.
Por acaso mais alguém aqui acompanha os vídeos desta série? O último episódio é sobre TDD mais avançado.
O "Uncle Bob" mantém um grupo de discussão aqui no google sobre a série onde aparentemente ele mesmo responde dúvidas sobre os vídeos.
https://groups.google.com/forum/?fromgroups#!forum/clean-code-discussionAcho que para quem está começando a aprender sobre os temas e não tem dificuldade para entender inglês acho que vale a pena.
Na série o Uncle Bob começa convidando você entrar na casa dele , dá uma visão geral sobre o assunto e depois , não sei bem por qual motivo, usa 5 a 10 min para falar de ciência e astronomia (ex: Teoria da Relatividade ou Física quantica). Após a aula de ciência explica de maneira divertida o tema do vídeo interpretando vários personagens e algumas imitações como Spock , Kirk e Data de Jornada nas Estrelas usando alguns efeitos especias de filme trash.
Achei bom os conceitos passados, por exemplo, no episódio do princípio de Liskov fala do exemplo do quadrado que herda do retângulo causando violação do princípio de Liskov. Segundo "Ulcle Bob" o código (modelo de objeto) representa um retângulo, mas não é um retângulo. Geometricamente o quadrado é um retângulo, mas a representação no software não compartilha mesma relação de subtipo da geometria.
Na série o "Ulcle Bob" compara um objeto como um representante (procurador) de uma pessoa na vida real, por exemplo,
um advogado que você contratou para cuidar de seu divórcio, mas isto não significa o advogado (representante) também está se divorciando.
No episódio do princípio do Aberto/Fechado dá um pouco mais enfase a limitação deste princípio que somente poderia ser aplicado por completo se tivéssemos uma bola de cristal para saber o futuro e pudéssemos deixar o software preparado com abstrações que atendessem todas alterações e necessidades futuras do software sem precisar mexer no código atual. Para resolver este problema propõe duas opções:
1) Fazer um design grande no início (BDUF) para tentar prever estas alterações, mas não é uma opção que ele recomenda.
2) Usar um design mais simples, aguardar as alterações solicitadas e depois usar abstrações para tentar se proteger de mudanças do mesmo tipo.
Ricardo.