SOLID è un acronimo mnemonico per un insieme di principi di progettazione creati per lo sviluppo di software in linguaggi orientati agli oggetti.
I principi di SOLID hanno lo scopo di promuovere un codice più semplice, più robusto e aggiornabile dagli sviluppatori di software. Ogni lettera in SOLID corrisponde a un principio di sviluppo:
- Sresponsabilità unica
- Openna / chiuso
- Lsostituzione di iskov
- Isegregazione delle interfacce
- Dinversione di ependenza
Il progetto SUn principio di responsabilità unico, creato da Robert C. Martin, afferma che una classe dovrebbe avere una, e una sola, ragione per cambiare. Questo principio garantisce che ogni classe debba avere una sola funzione, per facilitare l'aggiornamento e limitare le possibili complicazioni dovute a modifiche future. Il principio può essere applicato a componenti software o strumenti di microservizi.
Il progetto OIl principio penna / chiuso assicura che le entità software siano aperte all'estensione ma chiuse per la modifica. Bertrand Meyer è principalmente accreditato della creazione di questo principio, che si concentra sul rendere le abilità di una classe facili da migliorare per estensione ma previene possibili complicazioni che potrebbero essere causate modificando l'entità e influenzando le dipendenze di altre funzioni che si basano su di essa.
Il progetto LIl principio di iskov stabilisce che oggetti dello stesso tipo siano sostituibili con altri della stessa categoria senza alterare la funzione del programma. Creato da Barabara Liskov, questo principio garantisce che sia possibile passare a mezzi più efficaci per eseguire un'attività senza influire indebitamente sul programma o richiedere aggiornamenti sostanziali del codice.
Il progetto IIl principio di separazione delle interfacce stabilisce che le interfacce dell'applicazione devono essere sempre tenute più piccole e separate l'una dall'altra. Questo principio garantisce che i client debbano solo familiarizzare con le funzionalità dei metodi o delle interfacce utilizzate, in modo che possano essere rispettivamente aggiornati senza che l'uno complichi l'altro. Questa separazione fatta da livelli di astrazione fornisce spazio per documentare la funzionalità evitando l'accoppiamento di dipendenze nel codice.
Il progetto DIl principio di inversione di ependenza specifica una forma di disaccoppiamento delle dipendenze nel codice. Nell'inversione delle dipendenze, le dipendenze nel codice di alto livello che impostano le politiche vengono invertite nei moduli di dipendenza di basso livello. Questo separa il codice di alto livello dai dettagli dei moduli di basso livello.
Mentre le idee per i principi SOLID sono state sviluppate nel 1995 da Robert C. Martin, coautore dell'Agile Manifesto, l'acronimo è stato coniato da Michael Feathers all'inizio degli anni 2000 come un modo per ricordare i concetti. Altre metodologie di sviluppo software popolari includono Agile, il principio KISS, GRASP (Principi generali del software di assegnazione delle responsabilità) e il principio DRY.