aprimoramentos • Faz parte do dia-a-dia da programação • Ferramentas automatizadas (IDEs) são úteis, mas não essenciais • Corrigir quaisquer bugs que você encontrar pelo caminho não é refatoração. • Sempre torne as coisas mais fáceis e seguras para alterar no futuro
dia • Cada integração é verificada por um build automatizado (incluindo testes) • Manutenção de um repositório de fonte única • Todo mundo faz commits na branch principal todos os dias • É importante consertar builds quebrados imediatamente • Todo mundo sabe e pode ver o que está acontecendo • Automatização de deploy
fazer alterações em código testado • É mais rápido para identificar falhas causadas por uma alteração • O código escrito se torna mais desacoplado e tem mais reuso • O desenvolvimento com testes é mais rápido • O custo para corrigir bugs é menor
design, faça experimentos e receba feedback rápido • Valide suas hipóteses de design em pequenos ciclos • Traz um ciclo natural de evolução "baby-steps" • É mais fácil fazer testes com TDD do que escrever testes após o código de produção Think Red Green Refactor
são encontrados em vários projetos de software • Os padrões são uma documentação de boas práticas para resolver esses problemas • Melhora a leitura do código e facilita aplicar princípios de design • Facilita a comunicação do time quando analisam problemas de design, permitindo propor soluções conhecidas • Ajudam o software a crescer de maneira estruturada
FirstPeriodState applyEvent(Match m, PeriodEndedEvent e) HalfTimeState SecondPeriodState Match - currentState + applyEvent(Event e) Contexto de uma partida de futebol
importantes são atrasadas ao máximo, com o objetivo de ampliar as informações sobre a necessidade e minimizar os débitos técnicos por complexidade • Arquitetar e desenvolver para evolutibilidade • Lei de Postel (o que devo enviar e receber? KISS) • Arquitete para testabilidade