Quero ser Tech: SOLID no PHP 8
Por que falar sobre SOLID?
Um código bem estruturado, fácil de manter e de ser adicionado novas features é o objetivo de todo sistema. O SOLID vem pra ajudar e esclarecer como fazer isso.
O que é?
SOLID é um acrônimo de 5 letras, onde cada uma se refere a uma boa prática de orientação a objetos.
Single Responsibility Principle (Princípio da responsabilidade única)
Definição: Uma classe só deve ter um único motivo para mudar.
Problema:
A classe acima faz conexão com banco de dados, cria categoria e cria curso dando a ela muitas responsabilidades.
Como resolver o problema: Separar as responsabilidades em classes específicas.
Solução:
Open Closed Principle (Principio aberto fechado)
Definição: Uma classe está aberta para extensão e fechada para modificação.
Problema:
Para cada nova atualização, a classe precisa ser modificada podendo resultar em problemas em outros tipos que não estão ligados a ela.
Como resolver o problema: Criar uma classe genérica e subclasses estendendo seu comportamento
Solução:
Liskov Substitution Principle ( Princípio de Substituição de Liskov )
Definição: Subclasses podem ser substituídas por classes pais.
Problema:
A classe Square não pode se comportar como um Rectangle, ferindo o princípio
Como resolver o problema: Fazer abstrações melhores de classes que possam ser utilizadas e estendidas por outras
Interface Segregation (Segregação de Interfaces)
Definição: Uma classe não pode implementar uma interface que possui um método que ela não utiliza.
Problema:
A classe Computador não possui a parte de usar o touchpad, algo que seria exclusivo do notebook, a solução desse problema tem a mesma lógica da substituição de Liskov
Solução:
Separamos as interfaces para serem usadas somente quando a classe precisa e faz uso de todos métodos.
Dependency Inversion Principle (Inversão de Dependência)
Definição: Seu código deve depender de abstrações e não implementações.
Problema:
Nesse caso acima, seu código está completamente preso ao uso do Laravel e fica difícil fazer mudanças.
Como resolver o problema: Dependa de abstrações
Solução:
Consigo ter uma mudança melhor no código sem que ele fique dependendo de implementações fixas.
SOLID resolve todos os meus problemas?
É certo que nem sempre você vai conseguir aplicar todos os conceitos no seu projeto, seja SOLID ou de um arquitetura, mas vem uma boa frase:
Nem só de SOLID viverá o homem
Alinhando SOLID com uma boa arquitetura e que tudo se encaixe no momento do seu projeto, sem querer forçar uma arquitetura ou padrão, as chances do seu código ser escalável e mais fácil de dar manutenção aumenta.
Obrigado por ler.