SOLID
Solid é um acrônimo de 5 princípios voltada a POO (Programação Orientada a Objetos) criado por Michael Feathers. Com o objetivo de tornar mais fácil o desenvolvimento de software e assim termos códigos mais limpos, pois separa as responsabilidades, diminui os acoplamentos, facilita na refatoração e estimula o reaproveitamento do código.
S — Single Responsiblity Principle (Princípio da responsabilidade única)
Uma classe deve ter um, e somente um, motivo para mudar.
Ou seja, a classe deve ter apenas uma única tarefa ou uma ação para executar.
O — Open-Closed Principle (Princípio Aberto-Fechado)
Objetos ou entidades devem estar abertos para extensão, mas fechados para modificação.
Ou seja, outras classes podem ter acesso ao que aquela classe possui, porém, não podem alterá-las. Quando novos comportamentos e recursos precisam ser adicionados no software, devemos estender e não alterar o código fonte original.
L — Liskov Substitution Principle (Princípio da substituição de Liskov)
As classes derivadas devem ser substituíveis pelas suas classes bases.
Por exemplo, se uma classe possuir os mesmos atributos existentes em outras classe já existente, o ideal seria herdar esses atributos, mesmo contendo outros atributos específicos dela mesma.
I — Interface Segregation Principle (Princípio da Segregação da Interface)
Classes não devem ser forçadas a depender de métodos que não usam.
Ou seja, melhor criar Interfaces mais específicas do que utilizar uma interface muito genérica.
D — Dependency Inversion Principle (Princípio da inversão da dependência)
Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender da abstração.
Abstrações não devem depender de detalhes. Os detalhes devem depender das abstrações.
Link Úteis
(VIDEO) Dicionário do Programador - https://www.youtube.com/watch?v=mkx0CdWiPRA
(ARTIGO) - https://blog.betrybe.com/linguagem-de-programacao/solid-cinco-principios-poo/