SOLID பராமரிக்கக்கூடிய, நমনीய OOP அமைப்புகளை உருவாக்குவதற்கான ஐந்து வடிவமைப்பு கொள்கைகள் ஆகும். ஒவ்வொன்றும் கடினமான, பலவீனமான குறியீডின் பொதுவான காரணத்தைக் குறிக்கிறது.
SOLID பராமரிக்கக்கூடிய, நমনीய OOP அமைப்புகளை உருவாக்குவதற்கான ஐந்து வடிவமைப்பு கொள்கைகள் ஆகும். ஒவ்வொன்றும் கடினமான, பலவீனமான குறியீডின் பொதுவான காரணத்தைக் குறிக்கிறது.
| எழுத்து | கொள்கை | ஒரு வரி பொருள் |
|---|
| S | Single Responsibility | ஒரு வர்க்கம் மாற்றத்திற்கு ஒரு காரணத்தை மட்டுமே கொண்டிருக்க வேண்டும் |
| O | Open/Closed | நீட்சிக்கு திறந்திருக்கும், மாற்றத்திற்கு மூடப்பட்டிருக்கும் |
| L | Liskov Substitution | சப்டைப்கள் அடிப்படை வகை எங்குள்ளதோ அங்கு பயன்படுத்தக்கூடியதாக இருக்க வேண்டும் |
| I | Interface Segregation | பல சிறிய இடைமுகங்கள் ஒரு பெரிய ஒன்றை விட சிறந்தவை |
| D | Dependency Inversion | உறுதி பட்ட வகுப்புகளுக்கு அல்ல, சுருக்கங்களைப் பொறுத்தது |
# 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 குறிப்பாக மின்னஞ்சல் சார்ந்து இல்லை — SMS அல்லது சோதனை இரட்டை மூலம் மாற்றவும் அதைத் தொடாமல் (D). ஒரு புதிய அறிவிப்பு வகையைச் சேர்ப்பது OrderService இல் எந்த மாற்றமும் தேவைப்படாது (O).
SOLID வழிகாட்டுதல், சட்டம் அல்ல. அதிகமாகப் பயன்படுத்துதல் — வகுப்புக்கு ஒரு இடைமுகம், எங்கும் மறைமுகத்தன்மை — "சுருக்க சூப்" தயாரிக்கிறது, அது அது தீர்த்த சிக்கலைக் காட்டிலும் பின்பற்ற கடினமாக உள்ளது.
SOLID பகிரப்பட்ட நோயறிதல் மொழி வழங்குகிறது: மதிப்பீட்டாளர்கள் ஒரு வகுப்பு மாற்றத்திற்கு எப்படி கடினமாக உள்ளது என்பதை பெயரிட முடியும் ("இது SRP ஐ மீறுகிறது") ரুசியினை விவாதிப்பதற்குப் பதிலாக।
நியாய மற்றும் கொள்கையுடன் பயன்படுத்தப்படும் போது, கொள்கைகள் அலைபால் விளைவுகளை குறைக்கின்றன — மாற்றங்கள் உள்ளூரில் இருக்கின்றன, புதிய அம்சங்கள் மீண்டும் எழுதுவதற்குப் பதிலாக நீட்டுக்கின்றன, மற்றும் சோதனைகள் உண்மையான சார்புகளுக்கான নகலை மாற்றக்கூடும்.