O Solid foi desenhado para ser utilizado na paradigma de orientação a objetos. Mas é possível adaptar sua utilização no paradigma de programação funcional (apesar de não ser em sua forma mais pura).
SOLID é um acrônimo que representa 5 princípios
- Single Responsibility (SRP)
- Open-closed principle (OCP)
- Liskov substituition principle (LSP)
- Interface agregation principle (ISP)
- Dependecy inversion principle (DIP)
-
Cada classe deve possuir apenas uma responsabilidade, pois, quando a mesma for modificada vai ficar custoso essa modificação
-
Levando para o React, Cada componente deve ter apenas uma única responsabilidade.
-
Para garantir que nossos componentes façam uma coisa internamente, podemos:
-> Quebrar componentes grandes que fazem muito em componentes menores -> Extrair código não relacionado à funcionalidade do componente principal em funções de utilitário separadas -> encapsular a funcionalidade conectada em custom hooks (Normalmente, se um componente possui o useEffect, poderá ser criado um customHook)
-
As entidades que temos em nosso software devem estar abertas para extensão, mas fechadas para modificação.
-
O princípio aberto-fechado defende a estruturação de nossos componentes de uma maneira que permita que eles sejam estendidos sem alterar seu código-fonte original.
-
As subclasses devem ser substituíveis por suas superclasses
-
Isso significa que as subclasses de uma determinada classe devem ser capazes de substituir a superclasse sem quebrar nenhuma funcionalidade.
-
Exemplo Se PlasticDucké uma subclasse de Duck, então devemos ser capazes de substituir instâncias de Duckcom PlasticDucksem surpresas.
-
No React isso significa que os componentes devem obedecer a algum tipo de contrato.
-
Em sua essência, isso significa que deve haver algum tipo de contrato entre os componentes. Portanto, sempre que um componente usa outro componente, ele não deve quebrar sua funcionalidade (ou criar surpresas).
-
A principal vantagem desse princípio é usar o TypeScript . Você pode trocar facilmente os componentes se eles compartilharem o mesmo contrato.
-
De acordo com o ISP, “os clientes não devem depender de interfaces que não usam”
-
Componentes não devem depender de adereços que eles não usam.
-
O princípio da inversão de dependência afirma que “deve-se depender de abstrações, não de implementações”
-
Em outras palavras, um componente não deve depender diretamente de outro componente, mas ambos devem depender de alguma abstração comum