SOLID ni kanuni tano za ujenzi wa mifumo ya OOP inayotegemeka, inayobadilika. Kila kanuni inashughulikia sababu maalum ya msimamo mgumu, code nyingine iliyofadhailiwa.
| Herufi | Kanuni | Maana ya safu moja |
|---|
| S | Single Responsibility | Darasa linapaswa kuwa na sababu moja ya mabadiliko |
| O | Open/Closed | Wazi kwa upanuzi, iliyofungwa kwa marekebisho |
| L | Liskov Substitution | Aina ndogo lazima ziwe zinazoweza kutumika popote aina ya msingi |
| I | Interface Segregation | Njia nyingi ndogo ni bora kuliko moja kubwa |
| D | Dependency Inversion | Tegemea dhana kamili, si madarasa mahsusi |
# Dependency Inversion: high-level code depends on an abstraction
class Notifier: # abstraction
def send(self, msg): ...
class EmailNotifier(Notifier):
def send(self, msg): print("email:", msg)
class OrderService:
def __init__(self, notifier: Notifier): # injected abstraction
self.notifier = notifier # not "new EmailNotifier()"
def place(self):
self.notifier.send("order placed") # works with ANY Notifier
OrderService haitegemei baruapepe kwa njia mahsusi — badilisha na SMS au kizazi cha mtihani bila kuigusa (D). Kuongeza aina mpya ya mjumbe haikoi mabadiliko ya OrderService (O).
SOLID ni mwongozo, si sheria. Kutumia zaidi — njia moja kwa darasa, mlalangano kila mahali — kuzalisha "supu ya dhana" ambayo ni ngumu kusundia kuliko tatizo lililotatuliwa.
SOLID inatoa lugha ya kufafanua kwa pamoja: wakabaaji wanaweza kumtaja kwa nini darasa ni ngumu kubadilisha ("hii inapinga SRP") badala ya kujadiliana kwa ladha.
Katika kutumia kwa heshima, kanuni zinarupuka athari za kuzunguka — mabadiliko yanahabari karibu, sifa mpya zinapanua badala ya kuandika upya, na mitihani inaweza kubadilisha wahalifu wa matakwimu badala ya tegemezi halisi.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia