En programació de programari, SOLID és un acrònim mnemotècnic de cinc principis de disseny destinats a fer que els dissenys orientats a objectes siguin més comprensibles, flexibles i mantenibles. Tot i que els principis SOLID s'apliquen a qualsevol disseny orientat a objectes, també poden formar una filosofia bàsica per a metodologies com el desenvolupament àgil o el desenvolupament de programari adaptatiu.
L'enginyer de programari i instructor Robert C. Martin va introduir els principis bàsics del disseny SOLID en el seu article de l'any 2000 Design Principles and Design Patterns sobre la putrefacció del programari.: 2–3 L'acrònim SOLID va ser encunyat al voltant del 2004 per Michael Feathers.
Principis Principi de responsabilitat única El principi de responsabilitat única (SRP) estableix que "mai hi hauria d'haver més d'una raó perquè una classe canviï". En altres paraules, cada classe només hauria de tenir una responsabilitat.
Importància Mantenibilitat: Quan les classes tenen una única responsabilitat ben definida, són més fàcils d'entendre i modificar. Testabilitat: És més fàcil escriure proves unitàries per a classes amb un únic enfocament. Flexibilitat: els canvis en una responsabilitat no afecten les parts del sistema que no hi estan relacionades.
Principi obert-tancat El principi obert-tancat (OCP) estableix que les "entitats de programari... hauria d'estar obert per a ampliacions, però tancat per a modificacions."
Importància Extensibilitat: Es poden afegir noves funcions sense modificar el codi existent. Estabilitat: Redueix el risc d'introduir errors en fer canvis. Flexibilitat: S'adapta més fàcilment a les necessitats canviants.
Principi de substitució de Liskov El principi de substitució de Liskov (LSP) estableix que "les funcions que utilitzen punters o referències a classes base han de poder utilitzar objectes de classes derivades sense saber-ho".
Importància Polimorfisme : Permet l'ús de comportaments polimòrfics, fent que el codi sigui més flexible i reutilitzable. Fiabilitat: Assegura que les subclasses s'adhereixen al contracte definit per la superclasse. Predictabilitat: Garanteix que la substitució d'un objecte de superclasse per un objecte de subclasse no trencarà el programa.
Principi de segregació d'interfícies El principi de segregació d'interfícies (ISP) estableix que "els clients no haurien de ser obligats a dependre d'interfícies que no utilitzen".
Importància Desacoblament: Redueix les dependències entre classes, fent que el codi sigui més modular i mantenible. Flexibilitat: Permet implementacions més específiques de les interfícies. Evita dependències innecessàries: els clients no han de dependre de mètodes que no utilitzen.
Principi d'inversió de dependències El principi d'inversió de dependències (DIP) estableix que cal dependre d'abstraccions, [no] de concrets.
Importància Acoblament fluix: Redueix les dependències entre mòduls, fent que el codi sigui més flexible i fàcil de provar. Flexibilitat: Permet canvis en les implementacions sense afectar els clients. Mantenibilitat: Facilita la comprensió i la modificació del codi.
Referències
Categoria:Programari