Princípios SOLID Desmistificados — Introdução

Apr 18 2023
Transformar ideias em realidade por meio de software é uma forma de arte lógica que deve ser feita com muito cuidado.
Construir um software complexo é estimulante e desafiador, mas é ainda mais desafiador e deprimente manter e atualizar um software mal escrito. A metodologia na qual escrevemos códigos excelentes e bem estruturados é seguindo e aderindo a um conjunto de princípios chamados Princípios SOLID.

Construir um software complexo é estimulante e desafiador, mas é ainda mais desafiador e deprimente manter e atualizar um software mal escrito.

A metodologia na qual escrevemos códigos excelentes e bem estruturados é seguindo e aderindo a um conjunto de princípios chamados Princípios SOLID .

Os princípios SOLID foram introduzidos pela primeira vez pelo cientista da computação Robert C. Martin em seu artigo publicado em 2000.

Vejamos o acrônimo SOLID:

(S) princípio de responsabilidade única

Uma classe deve ser responsável apenas por um único propósito, o que significa que uma classe deve ter apenas um tipo de trabalho a ser executado, como (lógica de banco de dados, lógica de registro e assim por diante).

Princípio (O)aberto/Fechado

Uma classe deve ser aberta para extensão e fechada para modificação, o que significa que uma classe existente deve ser extensível sem precisar ser reescrita para implementar uma nova funcionalidade.

(L) Princípio de Substituição de iskov

As classes pai devem ser substituíveis por suas classes filhas com facilidade, ou seja, se a classe Rectangle for um subtipo da classe Shape, devemos ser capazes de substituir Shape por Rectangle sem interromper o fluxo funcional.

(I) Princípio de Segregação da Interface

As interfaces não devem forçar as classes a implementar funcionalidades que não suportam, o que significa que interfaces maiores devem ser divididas em menores para oferecer suporte.

(D) Princípio de Inversão de dependência

As classes devem depender da abstração, mas não da concreção, o que significa que os módulos de alto nível não devem depender dos módulos de baixo nível. Ambos devem depender da abstração.