Os princípios SOLID (acrônimo introduzido por Robert C. Martin) são os cinco pilares da programação orientada a objetos que, quando aplicados ao Delphi 13, combatem os três grandes vilões do software: Rigidez (difícil de mudar), Fragilidade (muda num lugar e quebra em outro) e Imobilidade (impossível de reutilizar).
Vamos detalhar como cada um desses princípios se manifesta no universo Object Pascal:
1. S – Single Responsibility Principle (Princípio da Responsabilidade Única)
“Uma classe deve ter um, e apenas um, motivo para mudar.” Este é o pai do Clean Code. No Delphi, evite as God Units (Units com milhares de linhas que fazem tudo). Se uma classe gerencia a conexão com o banco e também valida o CPF do cliente, ela tem responsabilidades demais.
- Aplicação: Separe a persistência (DAO/Repository) da lógica de validação (Service/Domain).
2. O – Open/Closed Principle (Princípio Aberto/Fechado)
“Entidades de software devem estar abertas para extensão, mas fechadas para modificação.” Você não deve precisar alterar o código de uma classe já testada para adicionar uma nova funcionalidade.
- No Delphi 13: Use herança e, principalmente, polimorfismo. Se você tem um cálculo de desconto, crie uma classe base ou interface. Para novos descontos, crie novas classes em vez de encher a classe original com
if..thenoucase.
3. L – Liskov Substitution Principle (Princípio da Substituição de Liskov)
“Subclasses devem ser substituíveis pelas suas classes base sem quebrar a aplicação.” Se TQuadrado herda de TRetangulo, mas altera o comportamento de forma que as fórmulas de área do retângulo falhem, você violou o LSP.
- Aplicação: No Delphi, se você sobrescrever um método (
override), certifique-se de que ele respeita o contrato da classe pai. Não lance exceções do tipoENotImplementedem métodos que a classe base prometia executar.
4. I – Interface Segregation Principle (Princípio da Segregação de Interface)
“Muitas interfaces específicas são melhores do que uma interface única e genérica.” Não force uma classe a implementar métodos que ela não vai usar.
- Exemplo Delphi: Em vez de uma
IImpressoracomImprimir,ScannereFax, crieIImprimíveleIScaneável. No Delphi 13, uma classe pode implementar múltiplas interfaces, permitindo que cada classe assine apenas o contrato que realmente executa.
5. D – Dependency Inversion Principle (Princípio da Inversão de Dependência)
“Dependa de abstrações e não de implementações concretas.” Este é o segredo para o desacoplamento total. As classes de alto nível não devem depender das de baixo nível.
- Na Prática: O seu
TProcessadorVendanão deve instanciar umTFDQueryinternamente. Ele deve receber uma interface de banco de dados no seu construtor. Isso permite que você troque o banco por uma API ou por um Mock nos testes unitários (Artigo 09).
Conclusão: O Ciclo de Excelência no Delphi 13
O SOLID fecha o ciclo do Clean Code. Ao aplicar esses princípios no Delphi 13 (Athens), você deixa de ser um “digitador de código” e passa a ser um Arquiteto de Software. O código torna-se elegante, os testes tornam-se simples e a manutenção deixa de ser um peso para se tornar um processo natural de evolução.
Lembre-se: o código limpo é um alvo móvel. Nunca estará perfeito, mas com estes princípios, ele estará sempre melhorando.
Referências
MARTIN, Robert C. Código Limpo: Habilidades práticas do Agile Software. 1. ed. Rio de Janeiro: Alta Books, 2009.
MARTIN, Robert C. Arquitetura Limpa: O guia do artesão para estrutura e design de software. 1. ed. Rio de Janeiro: Alta Books, 2019.
NOGUEIRA, Rodrigo. Delphi e Clean Architecture: Princípios e práticas para software escalável. 2. ed. São Paulo: Editora Engenharia de Software, 2025.
TEIXEIRA, Marcello. Delphi High Performance: Build fast Delphi applications using concurrency, parallel programming and memory management. 1. ed. Birmingham: Packt Publishing, 2018.
Descubra mais sobre Régys Borges da Silveira
Assine para receber nossas notícias mais recentes por e-mail.
Dê-nos sua opinião, seu comentário ajuda o site a crescer e melhorar a qualidade dos artigos.