Ugrás a tartalomhoz

SOLID principles

A Wikiszótárból, a nyitott szótárból
(SOLID szócikkből átirányítva)


Főnév

SOLID principles (tsz. SOLID principleses)

  1. (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.