Quero ser Tech: SOLID no PHP 8

Rafael Rosa
edifyeducation

--

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.

--

--