डेमीटर का कानून सॉफ्टवेयर विकसित करने के लिए एक डिज़ाइन दिशानिर्देश है, विशेष रूप से ऑब्जेक्ट-उन्मुख प्रोग्रामिंग में। इसका उद्देश्य ऑब्जेक्ट्स के बीच निर्भरता को कम करना है, सिस्टम को अधिक मॉड्यूलर बनाना, बनाए रखने में आसान है, और बग्स के लिए कम प्रवण करना है।

डेमेटर कानून को समझना

डेमेटर कानून अक्सर "केवल अपने तत्काल मित्रों से बात" के रूप में संक्षेप में प्रस्तुत किया जाता है, वस्तु को केवल उनके प्रत्यक्ष सहयोगी के साथ संवाद करने के लिए प्रोत्साहित करता है। इसका मतलब है कि किसी वस्तु को केवल निम्नलिखित विधियों को लागू करना चाहिए:

  • खुद
  • पैरामीटर के रूप में पारित ऑब्जेक्ट
  • यह बनाता है ऑब्जेक्ट
  • इसकी प्रत्यक्ष घटक वस्तु

इस नियम का पालन करके, वस्तु की निर्भरता को कम किया जाता है, तंग युग्मन के जोखिम को कम किया जाता है और कोड को बदलने या विस्तारित करने में आसान बनाता है।

डेमेटर कानून को लागू करना

डेमेटर कानून को लागू करने में कक्षाओं और विधियों को डिजाइन करना शामिल है जो ऑब्जेक्ट ग्राफ़ में गहराई से नहीं पहुंचते हैं। उदाहरण के लिए, कॉल करने के बजाय:

order.getCustomer ().getAddress().getCity () ]

यह एक ऐसी विधि प्रदान करने के लिए बेहतर है जो आवश्यक जानकारी को सीधे लौटाती है:

order.getCustomerCity]

Refactoring Tips

  • कक्षा में ही जटिल श्रृंखलाओं को एनकैप्सुलेट करें।
  • वे विधियां जो केवल आवश्यक डेटा को उजागर करती हैं।
  • निर्भरता को कम करने के लिए फेकाडे या मीडियाटर जैसे डिजाइन पैटर्न का उपयोग करें।
  • कक्षाओं को एक ही जिम्मेदारी पर ध्यान केंद्रित रखें।

Demeter कानून के बाद के लाभ

इस कानून का पालन करने से कई फायदे मिलते हैं:

  • कक्षाओं के बीच युग्मन को कम करता है।
  • कोड पठनीयता और रखरखाव को बढ़ाता है।
  • इकाई परीक्षण को अलग वस्तुओं द्वारा आसान बनाता है।
  • आसानी से रिफैक्टरिंग और कोड का विस्तार करने की सुविधा देता है।

संक्षेप में, ऑब्जेक्ट-उन्मुख डिजाइन में डेमीटर के कानून को लागू करने से क्लीनर को बढ़ावा मिलता है, अधिक मॉड्यूलर कोड। यह डेवलपर्स को ऑब्जेक्ट इंटरेक्शन और निर्भरता के बारे में सावधानीपूर्वक सोचने के लिए प्रोत्साहित करता है, जिससे अधिक मजबूत सॉफ्टवेयर सिस्टम हो जाता है।