refactoring e code smells: seu código está apodrecendo!

Download Refactoring e Code Smells:  Seu código está apodrecendo!

Post on 29-Nov-2014

205 views

Category:

Software

3 download

Embed Size (px)

DESCRIPTION

Uma apresentação sobre Refactoring e Code Smells, abordando características do software em estado de apodrecimento, identificação de alguns code smells, e refactoring, e focado em melhoria contínua profissional em relação a engenharia de software.

TRANSCRIPT

  • 1. Refactoring e Code Smells: Seu cdigo est apodrecendo!
  • 2. Emanuel Canuto Desenvolvimento h 4 UECE Rock! Pensar Mantr a simplicidade Aprender @emanuel_canuto
  • 3. Desenvolvimento de software gil f*da!
  • 4. caso contrrio seria msico
  • 5. CAF!!!
  • 6. Tava precisando! @handersonbf https://www.facebook.com/photo.php?fbid=10203189806695222&set=p.10203189806695222&type=1&permPage=1
  • 7. Mudar evoluir!
  • 8. FFFFiiiigggghhhhtttt !!!!!!!!
  • 9. Quem trabalha ou j trabalhou em algum projeto Bugado???
  • 10. Quem j bugou um projeto ???
  • 11. Pense! Quais foram as experincias ???
  • 12. Rigidez Parece simples, mas difcil de mudar Mudanas em cascata Dependncias entre mdulos Medo de correo de bugs
  • 13. Fragilidade Code and Fix Manuteno Adventure Desenvolvimento fora de controle Credibilidade comea a cair Terminei a feature!!! Ei mah, tua feature quebrou!
  • 14. Imobilidade No possvel reutilizar software Muitas Dependncias Responsabilidades de mais Risco alto para reutilizar
  • 15. Quem foi o FDP que escreveu isso aqui?
  • 16. Refactoring
  • 17. O que mais caro?
  • 18. O que mais caro?
  • 19. melhor pagar sem juros, certo?
  • 20. No esquea, Pague o dbito!
  • 21. Se vc no paga suas contas?
  • 22. Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Martin Fowler
  • 23. By continuously improving the design of code, we make it easier and easier to work with. This is in sharp contrast to what typically happens: little refactoring and a great deal of attention paid to expediently adding new features. If you get into the hygienic habit of refactoring continuously, you'll find that it is easier to extend and maintain code. Joshua Kerievsky
  • 24. No deixe pra depois!
  • 25. Baby Steps
  • 26. BBAADD SSMMEELLLLSS
  • 27. Sintomas de que seu cdigo est com problemas.
  • 28. Long Method The object programs that live best and longest are those with short methods. [] The key here is not method length but the semantic distance between what the method does and how it does it. []
  • 29. Long Method [] Development environments that allow you to see two methods at once help to eliminate this step, but the real key to making it easy to understand small methods is good naming. []
  • 30. public int fechaFolha(String folha) { // imprime a folha adicionando bla bla bla try { FileReader arq = new FileReader(folha); BufferedReader lerArq = new BufferedReader(arq); String linha = lerArq.readLine(); while (linha != null) { System.out.printf("%sn", linha); this.linha += linha; linha = lerArq.readLine(); } arq.close(); } catch (IOException e) { System.err.printf("Erro na abertura do arquivo: %s.n", e.getMessage()); } // verifica se a folha especial if (linha.contains("ARS0010304")) { this.folhaEspecial = true; }
  • 31. public int fechaFolha(String folha) { imprimeFolha(folha); ehFolhaEspecial(); atualizaDadosDePagamento(); }
  • 32. public int fechaFolha(String folha) { imprimeFolha(folha); eFolhaEspecial(); atualizaDadosDePagamento(); } private void ehFolhaEspecial() { if (linha.contains("ARS0010304")) { this.folhaEspecial = true; } } private void imprimeFolha(String folha) { try { FileReader arq = new FileReader(folha); BufferedReader lerArq = new BufferedReader(arq); String linha = lerArq.readLine(); while (linha != null) { System.out.printf("%sn", linha); this.linha += linha; linha = lerArq.readLine(); }... I throw away commented code
  • 33. Few Short Methods Per Class Fcil de testar. Fcil para reusar. Fcil para modificar. Menos bugs so descoberto, estatisticamente em mtodos curtos e classes curtas. Equipe de desenvolvimento coda mais rpido, porque h menos necessidade de refactoring.
  • 34. Shotgun Surgery
  • 35. Shotgun Surgery You whiff this when every time you make a kind of change, you have to make a lot of little changes to a lot of different classes. When the changes are all over the place, they are hard to find, and it's easy to miss an important change.
  • 36. Feature Envy FFeeaattuurree EEnnvvyy
  • 37. Feature Envy A classic smell is a method that seems more interested in a class other than the one it actually is in. [ . . . ] The most common focus of the envy is the data.
  • 38. Feature Envy Mova o mtodo quando todo o mtodo quer estar claramente em outro lugar,

Recommended

View more >