SOLID — Princípios da Programação Orientada a Objetos

SOLID são princípios ou boas práticas da programação orientada a objetos, e podem ser aplicados a qualquer linguagem de programação.

Mas de fato, o que é o SOLID?

SOLID é um acrônimo criado por Michael Feathers que representa os 5 princípios da programação orientada a objetos identificados por Robert Cecil Martin ou Uncle Bob nos princípios de 2000.

Os Princípios

Vamos falar dos 5 princípios:

SRP - Single responsibility principle 
Princípio da Responsabilidade Única - Uma classe deve ter um, e somente um, motivo para mudar.

OCP - Open/closed principle
Princípio do Aberto/Fechado - Você deve ser capaz de estender um comportamento de uma classe sem a necessidade de modificá-lo.

LSP - Liskov substitution principle
Princípio da substituição de Liskov - As classes derivadas devem ser substituíveis por suas classes bases.

ISP - Interface segregation principle
Princípio da segregação de interfaces - Muitas interfaces específicas são melhores do que uma interface única geral.

DIP - Dependency inversion principle
Princípio da inversão de dependência - Dependa de abstrações e não de implementações.

Esses princípios são a base para vários Padrões e Projetos e tornam softwares mais evolutivos, de fácil manutenção e facilita mudanças necessárias após a finalização do projeto, não impactando em outras áreas do programa. De fato, podemos afirmar que um software que não segue tais princípios é um software mal escrito e de má qualidade.

Considero o conhecimento sobre SOLID primordial para desenvolvedores de todos o níveis, para os mais experientes, pois uma boa parte dos programadores atualmente não aplicam esses princípios aos sistemas que desenvolvem e aos iniciantes para que desde o início tenham esses princípios e boas práticas correndo em suas veias : )

Ok, mas, se eu não aplicar esses princípios o que acontece?

Não utilizar SOLID significa expor sua aplicação a problemas como:

  • Repetição de Código, ou seja, uma simples alteração deve ser replicada em vários pontos diferentes da sua aplicação;
  • Código sem estrutura coesa ou padronizada;
  • Rigidez e fragilidade, ou seja, qualquer alteração provoca uma cascata de operações ou falhas em várias partes do sistema;
  • Dificuldade na execução e criação de testes;
  • Não reaproveitamento, ou seja, nenhuma ou quase nenhuma funcionalidade pode ser reaproveitada para outros sistemas.

O.o Realmente, muitos pontos negativos, e quais são os positivos?

Aplicando os princípios adquirimos para a nossa aplicação benefícios da orientação a objetos, tais como:

  • Fácil manutenção, entendimento e organização;
  • Arquitetura aberta a receber atualizações, melhorias e novos recursos sem danos colaterais;
  • Aplicação de testes de forma fácil e de simples entendimento;
  • Fácil reaproveitamento de código;
  • Fácil adaptação a mudanças no escopo do projeto.

Nos próximos artigos, abordarei cada um dos princípios de forma isolada para que possamos ter um grande aproveitamento e entendimento sobre cada um deles.

Fique a vontade para comentar, compartilhar : )

Grande [ ] e até a próxima!!!