SOLID bincike gida biyar ne don gina tsarin OOP da za a iya tunkarar, da kuma na flexible. Kowanninsu yana magani ga dalilin gida na karfin, m jajaye kodaci.
| Harafin | Ƙa'ida | Hanyar fassara ta daya |
|---|
| S | Alhakin Daya Kawai | Sanda ya kamata samun hanya daya kawai ta canza |
| O | Bude/Rufe | Bude don fadada, rufe don canzawa |
| L | Liskov na Sauyi | Nau'i mabambaɗi dole su iya amfani inda aka samu tushen nau'in |
| I | Rabuwa na Sambari | Yawancin ƙananan sambari suna da kyau fiye da daya mai kiba |
| D | Juyawa na Dogaro | Dogara ga absutra, ba ga nau'i na concrete |
# 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 ba ya dogara akan bakin jiya a takaice — canja ta SMS ko aguye na gwaji ba tare da tadowa a gida (D). Ƙara sabon nau'i na matakin baida ba ya buƙaci canja a OrderService (O).
SOLID ja ita ce jagowa, ba dokar ba. Ya wuce ta amfani — sambari ɗaya ga kowane ajii, juyawa a ko'ina — samar da "miski na abstrakshan" wanda ya fi wahala a bi fiye da matsalar da ya warware ta.
SOLID ana bayar da harshe na diganostic na gida-gida: masu duba ana iya suna gida me ya sa ajii ya fi wahala a canza ("wannan ya keta SRP") da juna ba tare da gardamar don dadi ba.
Ta amfani da juji, ƙa'ido sun rage tasiri na gida-gida — canja ta jiyo ta gida, sababbin fasals suna fadada saida sai sake rubuta, da kuma gwaje ana iya sauya aiki na gida domin dogaro na ainihi.