Na programação orientada a objetos, o termo SOLID é um acrônimo mnemônico para cinco princípios destinados facilitar a compreensão, o desenvolvimento e a manutenção do código-fonte de programas de computador. Embora os princípios tenham sido formulados para a aplicação na programação orientada a objetos, eles também formam um núcleo filosófico para metodologias como o desenvolvimento ágil de software e o desenvolvimento adaptativo de software.
Os princípios foram formulados e apresentados pelo engenheiro de software e instrutor Robert C. Martin em um artigo sobre deterioração de software chamado, em tradução livre, Princípios de Projeto e Padrões de Projeto.
Originalmente chamados de Principles of Object Oriented Class Design (Princípios de Projeto de Classes Orientadas a Objetos) na publicação original, os cinco princípios foram posteriormente chamados pelo acrônimo SOLID por Michael Feathers em 2004, ao reorganizá-los e coletar a primeira letra da sigla de cada um.
"Nunca deve haver mais que uma razão para uma classe mudar."
Importância do princípio da responsabilidade única:
"Entidades de software (classes, módulos, funções, etc.) devem ser abertas para extensão, mas fechadas para modificação."
Importância do princípio do aberto/fechado:
"Funções que recebem ponteiros ou referências de classes base devem conseguir operar com objetos de classes derivadas de forma transparente."
Importância do princípio da substituição de Liskov:
"Clientes não devem ser forçados a depender de interfaces que eles não usam."
Importância do princípio da segregação de interface:
A. "Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações." B. "Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações."
Importância do princípio da inversão de dependência: