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!!!