SOLID is a mnemonic acronym for a set of design principles created for software development in object-oriented languages.
The principles in SOLID are intended to foster simpler, more robust and updatable code from software developers. Each letter in SOLID corresponds to a principle for development:
- Single responsibility
- Open/closed
- Liskov substitution
- Interface segregation
- Dependency inversion
The Single responsibility principle, created by Robert C. Martin, states that a class should have one, and only one, reason to change. This principle ensures that any class should have only one function, to help ease updating and limit the possible complications by future changes. O princípio pode ser aplicado a componentes de software ou ferramentas de microserviços.
O princípio Open/closed assegura que as entidades de software sejam abertas à extensão mas fechadas para modificação. Bertrand Meyer é creditado principalmente com a criação deste princípio, que se concentra em tornar as habilidades de uma classe fáceis de melhorar por extensão, mas evita possíveis complicações que poderiam ser trazidas pela modificação da entidade e afetando as dependências de outras funções que dependem dela.
O princípio Liskov estipula que objetos do mesmo tipo podem ser substituídos por outros desta mesma categoria sem alterar a função do programa. Criado por Barabara Liskov, este princípio assegura que meios mais eficazes de executar uma tarefa podem ser mudados sem afetar indevidamente o programa ou requerer atualizações substanciais de código.
O princípio I segregação de interface estipula que as interfaces da aplicação devem ser sempre mantidas menores e separadas umas das outras. Este princípio garante que os clientes só precisam se familiarizar com a funcionalidade dos métodos ou interfaces que são usados, de modo que eles possam ser atualizados, respectivamente, sem que uma complique a outra. Esta separação feita por camadas de abstração fornece espaço para documentar a funcionalidade enquanto evita o acoplamento de dependências em código.
O princípio Dinversão de dependência especifica uma forma de desacoplamento de dependências em código. Na inversão de dependência, as dependências em código de alto nível que definem políticas são invertidas para os módulos de dependência de baixo nível. Isto separa o código de alto nível dos detalhes dos módulos de baixo nível.
>p>>p> Enquanto idéias para os princípios SOLID foram desenvolvidas em 1995 por Robert C. Martin, co-autor do Agile Manifesto, o acrônimo foi cunhado por Michael Feathers no início dos anos 2000 como uma forma de lembrar os conceitos. Outras metodologias populares de desenvolvimento de software incluem Agile, princípio KISS, GRASP (General Responsibility Assignment Software Principles) e o princípio DRY.