solução do problema. Código Escrever a solução como código. Refatoração Melhorar o design através do código. Código limpo Resultado é código legível e flexível. 2 3 4
Muitos bugs Olhar constantemente o código Novos membros têm dificuldade de entender Testes são difíceis de escrever Introduzir novas features é custoso Produção quebra mais do que deveria 14
o que você irá refatorar Verifique a cobertura de testes Verifique quais cenários estão cobertos Entenda a funcionalidade e como ela afeta o sistema (front, back, suporte e cliente) Não altere os testes enquanto refatora! 16
duplicação de código e métricas ABC, respectivamente. Use ferramentas Rubycritic É a combinação das três ferramentas com gráficos, classificação de cada arquivo e code smells em formato HTML. 17
tanto que são difíceis de lidar. São smells que não são aparentes de início, mas tornam-se uma bola de neve. Couplers Esse smells representa o código que tornam as classes acopladas excessivamente. Além do acoplamento, também há o excesso de delegação. Change Preventers Alterações no código precisam ser feitas em múltiplos lugares, tornando o desenvolvimento custoso. 20 Dispensables São códigos desnecessários que tornam o código mais legível, limpo e fácil de entender quando removidos. Object-Orientation Abusers Aplicações incompletas ou erradas de orientação a objetos.
Você não sabe o que o método faz, ao menos não sem ler algumas vezes • Código muito identado (loops e ifs) • Muitos comentários explicando o que um trecho de código faz 23
métodos menores • Replace Temp with Query para remover variáveis temporárias • Replace Method with Method Object para variáveis muito acopladas • Decompose Conditional para condicionais 24
responsabilidade • Replace Type Code with Polymorphism para classes que verificam o tipo de objeto • Replace Type Code with Strategy para classes que tenham algoritmos diferentes com base no tipo 71
Ben Orenstein • Get a Whiff of This - Sandi Metz • Workflows of Refactoring - Martin Fowler • Refactoring Live: Primitive Obsession - James Dabbs (RailsConf 2019 ) • Succession - Katrina Owen (RailsConf 2016) 147
Ruby Conf 2012) • Polly want a message - Sandi Metz • All The Little Things - Sandi Metz • Software Design in the 21st Century - Martin Fowler • Refatoração: um pouco além do código - Edmilton Neves (Guru-SP) 148