SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) is een acroniem dat gebruikt wordt in verband met het programmeren van computers. Ze werd bedacht door Michael Feathers voor de eerste vijf principes die Robert C. Martin aangaf aan het begin van de jaren 2000. De afkorting staat voor de vijf belangrijkste principes in het object-georiënteerd programmeren. Deze principes samen maken het waarschijnlijker dat een programmeur een systeem zal maken dat duurzamer is en gemakkelijk te onderhouden of uit te breiden. De SOLID-principes maken deel uit van een meer globale strategie van agile ontwikkeling en adaptief programmeren.

Overzicht

  • S = Single responsibility principle

In tegenstelling tot wat veel ontwikkelaars denken, is SRP in SOLID niet het principe dat een klasse of functie één verantwoordelijkheid heeft. SRP in SOLID betekent dat de verantwoordelijkheid van het veranderen van een module bij 1 actor ligt. Een module kan zo simpel zijn als een klasse maar dit kan ook een groep van klasses zijn binnen een package.

  • O = Open/closed principle

“software-entiteiten … moeten open zijn voor uitbreiding, maar gesloten voor wijziging.”

  • L = Liskov substitution principle

“objecten in een programma zouden vervangbaar moeten zijn door instanties van hun subtypes zonder dat de juiste werking van het programma beïnvloed wordt.”

  • I = Interface segregation principle

“veel client-specifieke interfaces zijn beter dan één algemene interface.”

  • D = Dependency inversion principle

"men zou afhankelijk moeten zijn van abstracties, niet van concrete implementaties". Dependency injection is een manier om dit principe toe te passen.