9. Caching
• Negligenciado
• Difícil em um nível “realista”
• “There are only two hard things in
Computer Science: cache invalidation and
naming things”
10. Caching
• Muleta (otimize primeiro)
• Para começar: kasket, cache-money etc
• Se é difícil invalidar, #comofas?
16. Pressão
• “Se não usar X, não está fazendo direito”
• A ferramenta certa para o trabalho
• Para quem?
• Ex: Cucumber/Steak
17. Pressão
• Faca ruim ou técnica ruim?
• Ruim para a equipe
• Eu faço debugging com puts
• “It’s tempting for people to obsess over
tools instead of what they’re going to do
with those tools”
19. Código
• Entender o problema
• Não tente resolver o que não te incomoda
• Solução emergente
• “The worst misstep one can make in design
is to solve the wrong problem.” – John
Carroll
20. Atacando o “problema”
errado
• Demeter: chamar um acessor em outro
objeto é o verdadeiro problema?
• NullDB: acessar BD em teste é o verdadeiro
problema?
21. Atacando o “problema”
errado
• Demeter
• Replica funcionalidade do delegate (stdlib)
• Problema real é exposição indevida de
comportamento
22. Atacando o “problema”
errado
• NullDB
• Problema real é acoplamento da lógica à
persistência
• Deve ser possível testar lógica independente
da persistência por design
31. Acoplamento
• SOLID, DDD
• Sandi Metz, Jim Weirich, Pat Maddox, James
Golick, Cassio Marques
• “Parametrização”
• SRP! SRP! SRP! SRP! SRP! SRP!
• Think about concerns
32. Conclusão
• Repense “Fat Models”
• Domínios complexos exigem flexibilidade
• Lógica importante deve:
• ser explícita
• ter um nome
• ter uma localização clara
33. Links
• The Building Blocks of Modularity (ou Grand Unified Theory of Software Design) - http://is.gd/egHfv
• SOLID Ruby - http://is.gd/eeyDn
• Demeter is for Encapsulation - http://is.gd/eeyLx
• Opinionated Modular Code - http://is.gd/eeyXm
• Scaling to Hundreds of Millions of Requests - http://vimeo.com/12814529