SOLID principles
Főnév
SOLID principles (tsz. SOLID principleses)
- (informatika) A szoftverfejlesztésben a SOLID egy mozaikszó, amely öt tervezési alapelvet foglal össze. Ezek az elvek azt a célt szolgálják, hogy az objektum-orientált tervezések érthetőbbek, rugalmasabbak és könnyebben karbantarthatók legyenek. Bár a SOLID-elvek bármilyen objektum-orientált rendszerben alkalmazhatók, a mögöttük rejlő filozófia jól illeszkedik olyan módszertanokhoz is, mint például az agilis fejlesztés vagy az adaptív szoftverfejlesztés.
A SOLID alapelveket Robert C. Martin (szoftvermérnök és oktató) vezette be 2000-ben megjelent Design Principles and Design Patterns című cikkében, amelyben a szoftverek “elhasználódásáról” írt. A “SOLID” mozaikszót Michael Feathers alkotta meg 2004 körül.
Az elvek
Egységes felelősség elve (Single Responsibility Principle – SRP)
Az egységes felelősség elve kimondja, hogy
“egy osztálynak soha nem lehet több, mint egy oka a változásra.”
Más szavakkal: minden osztálynak csak egy felelőssége kell, hogy legyen.
Jelentősége:
- Karbantarthatóság: Az egyértelmű, egyetlen felelősséggel bíró osztályok könnyebben érthetők és módosíthatók.
- Tesztelhetőség: Az ilyen osztályokhoz könnyebb egységteszteket írni.
- Rugalmasság: Egy adott felelősség megváltoztatása nem érinti a rendszer más részeit.
Nyitott–zárt elv (Open–Closed Principle – OCP)
A nyitott–zárt elv kimondja, hogy
“a szoftverelemeknek nyitottnak kell lenniük a kiterjesztésre, de zártnak a módosításra.”
Jelentősége:
- Bővíthetőség: Új funkciók hozzáadhatók a meglévő kód módosítása nélkül.
- Stabilitás: Csökkenti a hibák bevezetésének kockázatát a módosítások során.
- Rugalmasság: Könnyebben alkalmazkodik a változó követelményekhez.
Liskov-helyettesítési elv (Liskov Substitution Principle – LSP)
A Liskov-helyettesítési elv kimondja, hogy
“azoknak a függvényeknek, amelyek bázisosztályokra mutató mutatókat vagy referenciákat használnak, képesnek kell lenniük ezek helyett származtatott osztályok objektumait is használni, anélkül, hogy erről tudnának.”
(Összefügg a design by contract tervezési elvvel is.)
Jelentősége:
- Polimorfizmus: Lehetővé teszi a polimorf viselkedést, ezáltal a kód rugalmasabbá és újrahasznosíthatóbbá válik.
- Megbízhatóság: Biztosítja, hogy az alosztályok betartsák a szülőosztály által meghatározott szerződést.
- Előreláthatóság: Garantálja, hogy a szülőosztály példányának lecserélése egy alosztály példányára nem töri meg a programot.
Interfész-szegregáció elve (Interface Segregation Principle – ISP)
Az interfész-szegregáció elve kimondja, hogy
“az ügyfeleket (klienseket) nem szabad olyan interfészekre kényszeríteni, amelyekre nincs szükségük.”
Jelentősége:
- Lazább kapcsolatok: Csökkenti az osztályok közötti függőségeket, ezáltal a kód modulárisabbá és karbantarthatóbbá válik.
- Rugalmasság: Lehetővé teszi célzottabb interfész-implementációk létrehozását.
- Felesleges függőségek elkerülése: A kliensek nem függnek olyan metódusoktól, amelyeket nem használnak.
Függőséginverzió elve (Dependency Inversion Principle – DIP)
A függőséginverzió elve kimondja, hogy
“inkább absztrakciókra, mint konkrétumokra támaszkodjunk.”
Jelentősége:
- Laza kapcsolatok: Csökkenti a modulok közötti függőségeket, így a kód rugalmasabb és könnyebben tesztelhető.
- Rugalmasság: Lehetővé teszi az implementációk megváltoztatását a kliensek érintése nélkül.
- Karbantarthatóság: A kód könnyebben érthetővé és módosíthatóvá válik.
- SOLID principles - Szótár.net (en-hu)
- SOLID principles - Sztaki (en-hu)
- SOLID principles - Merriam–Webster
- SOLID principles - Cambridge
- SOLID principles - WordNet
- SOLID principles - Яндекс (en-ru)
- SOLID principles - Google (en-hu)
- SOLID principles - Wikidata
- SOLID principles - Wikipédia (angol)