Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O poder do Object Calisthenics no PHP

O poder do Object Calisthenics no PHP

Joubert RedRat

October 05, 2022
Tweet

More Decks by Joubert RedRat

Other Decks in Technology

Transcript

  1. Eu não sou uma entidade divina O que eu falo

    não é uma verdade absoluta, não tenha medo de questionar
  2. Antes de falarmos de Object Calisthenics no PHP... O que

    é Engenharia de Software para vocês?
  3. Object Calisthenics • Criado por Jeff Bay • Conjuntos de

    boas práticas para implementação de qualidade no código • Aplicação de alguns princípios de SOLID • Práticas focadas em legibilidade, manutenibilidade, testabilidade, reusabilidade e outros relacionados
  4. The famous 9 rules 1 - Only One Level Of

    Indentation Per Method 2 - Don’t Use The ELSE Keyword 3 - Wrap All Primitives And Strings 4 - First Class Collections 5 - One Dot Per Line 6 - Don’t Abbreviate 7 - Keep All Entities Small 8 - No Classes With More Than Two Instance Variables 9 - No Getters/Setters/Properties
  5. As famosas 9 regras 1 - Apenas um nível de

    indentação por método 2 - Não use ELSE 3 - Encapsule todos os tipos primitivos e strings 4 - Envolva suas collections em classes 5 - Use apenas um ponto por linha 6 - Não abrevie 7 - Mantenha todas as classes pequenas 8 - Não tenha mais que duas variáveis de instância em sua classe 9 - Não use Getters ou Setters
  6. Benefícios • Enfatiza o S (Single Responsiblity Principle - Princípio

    da responsabilidade única) do SOLID • Maior coesão no código • Evita o código hadouken • Redução da complexidade ciclomática da função ou método • Facilita criação de códigos reutilizáveis
  7. • Evita duplicação de código • Maior coesão e legibilidade

    • Redução da complexidade ciclomática • Ajuda o entendimento do Early Return Benefícios
  8. No caso do PHP, na verdade… 3 - Encapsule todos

    os tipos primitivos e strings que possuir comportamento
  9. Benefícios • Evita duplicação de código • Maior coesão e

    legibilidade • Redução da complexidade ciclomática • Ajuda o entendimento do Early Return
  10. Benefícios • Enfatiza o S (Single Responsiblity Principle - Princípio

    da responsabilidade única) do SOLID • Encapsulamento de operações com arrays
  11. Benefícios • Enfatiza a lei de deméter • Maior coesão

    e legibilidade • Aumenta a testabilidade do código • Torna mais fácil fazer mocks e debugs
  12. Porque a preguiça? Porque abreviar? “Ah, tenho que escrever o

    nome várias vezes” • Isso pode indicar duplicidade de código “Ah, o nome do método está muito longo” • Isso pode indicar que seu método está fazendo mais de uma coisa
  13. Benefícios • Maior legibilidade no código • Maior facilidade de

    compreensão do código • Aumenta a testabilidade do código • Torna mais fácil fazer mocks e debugs
  14. • Regra original: • 50 linhas por classe • Regra

    dentro do PHP: • 100 linhas por classe, incluindo documentação • 15 classes por namespace • 15 a 20 linhas por método
  15. Benefícios • Enfatiza o S (Single Responsiblity Principle - Princípio

    da responsabilidade única) do SOLID • Maior coesão no código, com métodos simples e objetivos • Namespaces menores e enxutos
  16. Benefícios • Enfatiza o S (Single Responsiblity Principle - Princípio

    da responsabilidade única) do SOLID • Maior coesão no código, com classes mais simples e objetivas • Maior facilidade em fazer mocks e injeção de dependências