Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Código com qualidade é o objetivo

159 visualizaciones

Publicado el

Palestra apresentada no ,PHP Experience poket 2019 no IMasters. Falamos sobre qualidade de código, bad smells, complexidade ciclomatica, S.O.L.I.D, TDD e boas práticas

Publicado en: Tecnología
  • Sé el primero en comentar

Código com qualidade é o objetivo

  1. 1. CÓDIGO COM QUALIDADE É O OBJETIVO
  2. 2. Jakeliny Gracielly Solutions Leader e Community Manager | FCAMARA Comunidades @jakelinygracielly https://jakeliny.com.br Contato
  3. 3. BAD SMELL
  4. 4. @jakelinygracielly https://jakeliny.com.br BAD SMELL ● Refatoração ● Classes ou métodos longos ● Código Duplicado
  5. 5. CLASSES OU MÉTODOS LONGOS
  6. 6. @jakelinygracielly https://jakeliny.com.br CLASSES OU MÉTODOS LONGOS ● Excesso de atributos ● “Coisas de Mais” ● Métodos centralizadores ● Extract Class / Extract Method
  7. 7. @jakelinygracielly https://jakeliny.com.br CLASSES OU MÉTODOS LONGOS
  8. 8. @jakelinygracielly https://jakeliny.com.br CLASSES OU MÉTODOS LONGOS
  9. 9. @jakelinygracielly https://jakeliny.com.br CLASSES OU MÉTODOS LONGOS
  10. 10. CÓDIGO DUPLICADO
  11. 11. @jakelinygracielly https://jakeliny.com.br CÓDIGO DUPLICADO ● Mesma ação em vários lugares ● Extract Method / Form template method ● PHP MD
  12. 12. @jakelinygracielly https://jakeliny.com.br CÓDIGO DUPLICADO
  13. 13. @jakelinygracielly https://jakeliny.com.br CÓDIGO DUPLICADO
  14. 14. FEATURE ENVY
  15. 15. @jakelinygracielly https://jakeliny.com.br FEATURE ENVY ● Método com atributo de outra classe ● Move Method / Inline Class
  16. 16. DIVERGENT CHANGE / SHOTGUN SURGERY
  17. 17. @jakelinygracielly https://jakeliny.com.br DIVERGENT CHANGE / SHOTGUN SURGERY ● DIVERGENT CHANGE ● Alterações por razões distintas ● Extract Class ● SHOTGUN SURGERY ● “Efeito Borboleta” ● Aparece na evolução do software ● Move Method / Move Field
  18. 18. COMMENTS
  19. 19. @jakelinygracielly https://jakeliny.com.br COMMENTS ● “Desodorante” ● 1000/5000 code ● Nomes não expressivos ● Extract Method / Rename Method/Field
  20. 20. CÓDIGO MORTO
  21. 21. @jakelinygracielly https://jakeliny.com.br CÓDIGO MORTO ● Não tenha “dó” ● Faça buscas por métodos ● Lembre que o Git existe
  22. 22. COMPLEXIDADE CICLOMÁTICA
  23. 23. @jakelinygracielly https://jakeliny.com.br COMPLEXIDADE CICLOMÁTICA ● Medir complexidade ● Caminhos independentes ● Condicionais / Loops
  24. 24. @jakelinygracielly https://jakeliny.com.br if ($numero > 10) else if ($numero < 30) else COMPLEXIDADE CICLOMÁTICA
  25. 25. @jakelinygracielly https://jakeliny.com.br 1-10 Método simples 11-20 Método complexo 21-50 Método muito complexo 51-N Método bastante instável. COMPLEXIDADE CICLOMÁTICA
  26. 26. @jakelinygracielly https://jakeliny.com.br COMPLEXIDADE CICLOMÁTICA
  27. 27. @jakelinygracielly https://jakeliny.com.br COMPLEXIDADE CICLOMÁTICA
  28. 28. @jakelinygracielly https://jakeliny.com.br COMPLEXIDADE CICLOMÁTICA ● If / Else ● Try / Catch ● Switch ● For / While / Foreach ● Recursividade / interação
  29. 29. TDD
  30. 30. @jakelinygracielly https://jakeliny.com.br TDD ● “Programmers are paid to develop code, not to write a unit test or comments.” ● #sextou ● No Bug
  31. 31. S.O.L.I.D
  32. 32. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D ● Fácil entendimento ● Baixo acoplamento ● Fácil Manutenção ● Reaproveitamento de código
  33. 33. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D S. Single Responsibility Principle S.
  34. 34. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D S. Single Responsibility Principle O. Open Closed Principle S.O
  35. 35. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D S. Single Responsibility Principle O. Open Closed Principle L. Liskov's Substitution Principle S.O.L
  36. 36. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D S. Single Responsibility Principle O. Open Closed Principle L. Liskov's Substitution Principle I. Interface Segregation Principle S.O.L.I
  37. 37. @jakelinygracielly https://jakeliny.com.br S.O.L.I.D S. Single Responsibility Principle O. Open Closed Principle L. Liskov's Substitution Principle I. Interface Segregation Principle D. Dependency Inversion Principle S.O.L.I.D
  38. 38. E SEU CÓDIGO PHP
  39. 39. @jakelinygracielly https://jakeliny.com.br E SEU CÓDIGO PHP ● mysqli_* ou PDO ● Performance no código ● Conheça bem a arquitetura do banco ● Novidades PHP
  40. 40. COMANDO USE
  41. 41. @jakelinygracielly https://jakeliny.com.br COMANDO USE
  42. 42. @jakelinygracielly https://jakeliny.com.br COMANDO USE
  43. 43. SEGURANÇA
  44. 44. @jakelinygracielly https://jakeliny.com.br SEGURANÇA ● SQL Injection ● eval ● Módulos não utilizados ● habilitar log ● security.ini
  45. 45. @jakelinygracielly https://jakeliny.com.br ● file_uploads=Off ● expose_php=Off ● display_errors=Off SECURITY.INI
  46. 46. PARA FINALIZAR...
  47. 47. @jakelinygracielly https://jakeliny.com.br ● PHP MD ● PHP Code Sniffer Catálogo de Martin Fowler: https://refactoring.com/catalog/ Ferramentas
  48. 48. @jakelinygracielly https://jakeliny.com.br CÓDIGO COM QUALIDADE 1. KISS – Keep It Simple, Stupid! 2. DRY – Don’t Repeat Yourself! 3. Não existe código perfeito, mas é possível ter código coeso! 4. Por que está comentando? 5. Refatoração é importante 6. Avaliar o débito do código 7. Acordo com a equipe 8. Evoluir como desenvolvedor
  49. 49. @jakelinygracielly https://jakeliny.com.br REFERÊNCIAS https://refactoring.guru/smells/ https://martinfowler.com/books/refactoring.html https://fernandofranzini.wordpress.com/category/tdd/ https://javarevisited.blogspot.com/2017/01/Top-10-excuses-programmers-giv es-to-avoid-unit-testing.html https://medium.com/thiago-aragao/solid-princ%C3%ADpios-da-programa%C3 %A7%C3%A3o-orientada-a-objetos-ba7e31d8fb25
  50. 50. Obrigada! Dúvidas? Comunidades @jakelinygracielly https://jakeliny.com.br Contato

×