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

Avatar for Joubert RedRat

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