Muito provavelmente você já ouviu falar dos tais princípios SOLID enquanto você estudava orientação a objetos. Mas, afinal de contas, para quê servem e onde podemos utilizá-los? Qual é a real importância destes princípios na programação orientada a objetos? O que posso obter de vantagens se eu utilizar os tais princípios SOLID?
Curso Scrum - Planejamento e Desenvolvimento Ágeis
Conhecer o cursoO que são os princípios SOLID?
É importante frisarmos que os princípios SOLID não constituem uma linguagem, nem uma tecnologia, nem um framework, nem uma biblioteca, nem uma arquitetura, nem um paradigma. Os princípios SOLID são apenas… princípios, haha. Eles constituem algumas constatações que podem fazer você programar mais próximo da orientação a objetos.
Estes princípios surgiram no início dos anos 2000 e foram definidos pelo engenheiro de software Robert Martin (também conhecido como Uncle Bob), sendo que a sigla que tornou estes princípios tão populares foi criada por Michael Feathers.
Os princípios SOLID tentam definir de maneira efetiva as bases para que a orientação a objetos seja efetivamente aplicada no mundo real, trazendo a possibilidade da construção de aplicações e sistemas que sejam fáceis de se manter e evoluir com o passar do tempo - este é um dos grandes desafios da arquitetura e engenharia de software até hoje!
Quais são estes princípios?
Curso Kotlin - Fundamentos
Conhecer o cursoSOLID na verdade é um acrônimo que denomina cinco princípios:
- Single Responsability Principle ou Princípio da Responsabilidade Única;
- Open/closed Principle* ou Princípio do aberto/fechado;
- Liskov Substitution Principle ou Princípio da Substituição de Liskov;
- Interface Segregation Principle ou Princípio da Segregação de Interfaces;
- Dependency Inversion Principle ou Princípio da Inversão de Dependências.
Não se preocupe no momento com cada um deles em especial… Nos próximos artigos, abordaremos cada um deles, inclusive com exemplos práticos. ;)
Mas, para quê eu deveria me atentar aos princípios SOLID?
Essa é uma pergunta que pode ser interessante. De fato, você não é obrigado a seguir os princípios SOLID necessariamente para programar com uma linguagem orientada a objetos (embora, sem querer, você vá acabar usando pelo menos um dos princípios em algum momento).
Mas, não tem sentido também não nos atentarmos a estes princípios se eles visam nos guiar para aplicarmos a Orientação a Objetos corretamente, obtendo manutenibilidade e extensibilidade do nosso código da maneira correta. Se estamos nos propondo a utilizar uma linguagem orientada a objetos, eu particularmente acho importante que nós tenhamos a capacidade de absorver o que é proposto pelo paradigma para aplicá-lo da maneira mais correta possível. Sendo assim, por que não entender os princípios SOLID?
Eu gosto de ilustrar o porquê de nos atentarmos a eles com a ilustração abaixo:
As ferramentas acima estão, nitidamente, sendo utilizadas de forma incorreta, não? Pois é… Mas quantas vezes nós não escrevemos código, mesmo que sem querer, que no final tínhamos uma situação parecida com essa? O código funcionava? Até funcionava… Da melhor maneira possível? Não necessariamente. Era fácil dar manutenção no código? Aí já era outra história, hahaha. Os princípios SOLID nos auxiliam a justamente evitar situações como as da imagem acima dentro do nosso código.
Os princípios SOLID são a salvação do universo?
Não, não são. Por várias vezes, você vai se encontrar no dilema de ou aplicar corretamente algum dos princípios ou tornar o seu código mais claro. Você até mesmo provavelmente irá chegar na situação de ou aplicar os princípios SOLID ou entregar o projeto no prazo determinado! Mas não, eles não constituem a salvação do seu software.
Existe também o fato de que você provavelmente não vá utilizar somente orientação a objetos em seu projeto. Assim como os princípios SOLID, a orientação a objetos não resolve todos os problemas de arquitetura e engenharia de software do mundo.
É por isso que temos outros paradigmas de desenvolvimento que podem ser muito mais úteis em determinadas situações, como o paradigma orientado a eventos, o paradigma funcional (este que vem ganhando muito mais popularidade a cada ano que passa) e o paradigma orientado a aspectos. Cada um deles é bom em resolver determinada situação e ruim para resolver outras. O legal é quando chegamos a um nível de maturidade onde conseguimos enxergar o melhor de cada um destes paradigmas e conseguimos aplicá-los em conjunto.
Mas, voltando aos princípios SOLID, se você provavelmente não vai utilizar somente orientação a objetos, isso quer dizer que você também não utilizará somente os princípios SOLID.
Nos próximos posts, iremos analisar e entender cada um dos cinco princípios SOLID. Verificaremos para que cada um deles serve, que problemas eles resolvem e, inclusive, teremos exemplos de implementações com “código de verdade”.
Até o próximo post da série! ;)