Princípios que, se seguidos, aumentarão de forma significativa a simplicidade e a qualidade do código, características que trazem como consequência uma maior facilidade para a manutenção do sistema.
É muito comum, no nosso dia a dia de desenvolvimento, nos depararmos com sistemas detentores de um código não reutilizável, com classes fortemente acopladas e não extensíveis. Com isso, tanto o trabalho de alterar funcionalidades já existentes quanto o de adicionar novas se torna uma tarefa muito complexa, dispondo de demasiado tempo e esforço.
Um sistema, quando implementado dentro de um cenário como o exposto, se torna frágil e nos remete a uma série de situações de erro. Erros se apresentam em qualquer módulo do projeto quando outra área do código é alterada.
Problemas como classes com mais de uma responsabilidade, métodos não extensíveis e interfaces poluídas consistem em falhas que podem ser de fato reduzidas com a prática do desenvolvimento sólido.
Uma implementação sólida é aquela em que as responsabilidades são bem definidas e distribuídas, e os comportamentos existentes podem ser reutilizados e facilmente estendidos para outras funcionalidades.
Com o intuito de ajudar o desenvolvedor a alcançar essa meta, foi criado o acrônimo S.O.L.I.D. Este acrônimo é simplesmente a junção de cinco princípios que, quando adotados, se tornam garantia de um código mais robusto e flexível.
Com base nisso, o objetivo deste artigo é apresentar de forma prática e abrangente o uso destes princípios, visando levar ao desenvolvedor o conhecimento necessário para começar a aplicá-los em seu ambiente de programação, seja em projetos novos ou em legados.
O Paradigma da Orientação a Objetos
O verdadeiro Design de Software é aquele em que toda a arquitetura pensada consiste na produção de código reutilizável, coeso, desenvolvido de forma legível e organizada. Isto é o que pregam as boas práticas da Orientação a Objetos: trazer benefícios reais para o desenvolvimento de softwares.
O paradigma da orientação a objetos nos apresenta uma coleção de diversos agentes interconectados. A estes agentes damos o nome de objetos e a cada um deles são atribuídas responsabilidades, ou seja, eles ficam responsáveis por executar tarefas específicas. Através dessa interação entre os objetos tarefas computacionais são realizadas.
Mas como realizar essa interação de forma limpa, legível e organizada conforme descrito anteriormente? Para desenvolver um sistema possuidor de um código com baixo acoplamento, devidamente modularizado, com suas responsabilidades bem definidas, Robert C. Martin, por volta dos anos 90, compilou cinco princípios da orientação a objetos que visam nos ajudar com a tarefa de obter um código mais sólido (S.O.L.I.D.).
Martin, mais conhecido como Uncle Bob, é um grande nome na comunidade de desenvolvimento de software, trabalhando na área desde 1970. Fundador e presidente da Object Mentor Inc. e autor de livros como Clean Code – A Handbook of Agile Software Craftsmanship e Clean Coder – A Code of Conduct for Professional Programmers. Martin, em sua publicação sobre SOLID, chama nossa atenção para quatro perguntas.
O que de fato é um design orientado a objetos? Do que ele trata? Quais são seus benefícios? E o quanto irá nos custar sua implementação? Essas perguntas podem parecer simplórias numa época em que todos os desenvolvedores de software estão usando alguma linguagem orientada a objetos, seja ela de qualquer tipo.
No entanto, são perguntas importantes, segundo ele, tendo em vista que a maioria de nós usa essas linguagens sem saber o porquê e sem saber como tirar o maior benefício delas.
Já a criação do acrônimo S.O.L.I.D. propriamente dito, foi introduzida por Michael Feathers, igualmente integrante da Object Mentor Inc. e autor do livro Working Effectively with Legacy Code. Feathers, na busca por facilitar a absorção da ideia, percebeu que a junção das cinco letras iniciais dos princípios, a saber: Single Responsability Principle, Open Closed Principle, Liskov Substitution Principle, Interface Segregation Principle e Dependency Inversion Principle, formavam a palavra Solid, que nos remete aos objetivos implícitos dos princípios, isto é, um desenvolvimento mais sólido.
Os cinco princípios da OO
Muitos dos profissionais envolvidos com o desenvolvimento de software orientado a objetos possuem o conhecimento acadêmico sobre acoplamento, coesão e
encapsulamento. Mas esses mesmos profissionais, em sua maioria, não têm ideia de como alcançar esses objetivos, conseguindo um código com alta coesão, baixo
acoplamento e forte encapsulamento. É disso que trata o S.O.L.I.D, que de f ...