Alguns princípios do raciocínio da programação orientada a objetos de forma direta, sem envolver revisão de conceitos.
...
Regras para programar orientado a objetos
O objetivo é modelar o problema usando abstrações, a implementação é só o "como" e vem depois de entender o problema. A regra de negócio é mais que a soma das implementações.
- Crie classes e interfaces para modelar o problema. Interfaces e classes são a estrutura do problema, criar uma estrutura sólida e flexível é mais importante do que economizar linhas de código.
- Legibilidade é uma prioridade! O código é a regra de negócio escrita, e programar é uma atividade de ler e pensar mais que de escrever
- Classes devem representar entidades do problema!
- Programe para interfaces e não implementações, use inversão de dependência: métodos são comportamentos de entidades não funções!
- Use interfaces como tipos de parâmetros e passe as entidades, não chame classes diretamente dentro de outras classes
- Classes são mais que métodos! elas representam informação!
- Cuidado com acoplamentos de classes! Limite o acoplamento limitando a responsabilidade das classes e usando interfaces!
- Defina o tipo dos parâmetros dos métodos sempre que possível! Use uma classe pai e sobrescrita de métodos, conceito chamado de polimorfismo, para evitar ter que usar IFs dentro de métodos
- Traits são a forma do PHP lidar com herança múltipla! Só utilize quando fizer sentido como uma característica adicional a um conjunto de classes
- Use interfaces! Interfaces são a chave da orientação a objetos, parte fundamental do SOLID e a estrutura de muitos Padrões de Projeto!
Conclusão
Uma forma de entender a diferença de raciocínio entre os paradigma estruturado e o orientado a objetos é que enquanto a programação estruturada visa mais resolver o problema implementando os passos, a programação orientada a objetos tem como objetivo modelar o problema.
Assim quando o problema mudar, e ele sempre muda, a POO facilita que o sistema possa ser alterado para refletir as regras de negócio.
Imagem da capa: https://unsplash.com/photos/gAe1pHGc6ms
Top comments (0)