यदि गुणवत्ता और पठनीयता के मामले में आपको अपने उत्पादन कोड की तुलना में अपने यूनिट परीक्षणों की बेहतर देखभाल नहीं करनी है तो आपको निश्चित रूप से इसे लेना चाहिए। यूनिट परीक्षण अक्सर पहली चीज होती है जिसे आप देखते हैं कि कोड के कुछ टुकड़े को समझने की कोशिश करते समय, और पाठक को जल्दी से समझना चाहिए कि परीक्षण को देखते समय क्या दांव पर है। इकाई परीक्षण भी बहुत कुछ बदल देते हैं और बहुत कुछ टूट जाएगा यदि उनका डिजाइन मजबूत नहीं है, तो परीक्षण होने के लाभों को किस तरह का नुकसान पहुंचाता है।
Demeter के कानून का उल्लंघन निश्चित रूप से आपके यूनिट परीक्षणों में एक समस्या है और साथ ही 2 अन्य लोग जो मेरे दिमाग से बाहर आते हैं:
यदि आपके परीक्षण उनके व्यवस्थित या अधिनियम अनुभागों में कानून के कानून को तोड़ते हैं, तो यह संभवतः एक संकेत है कि आपका उत्पादन कोड भी करता है, क्योंकि आपकी इकाई परीक्षण आपके कोड का सिर्फ एक अन्य उपभोक्ता है और संभवतः उसी परीक्षण के तहत कक्षा को कॉल और संचालित करेगा। तरीका है कि किसी भी अन्य उत्पादन कोड करना होगा।
यदि आपके परीक्षण उनके Assert वर्गों में Demeter के कानून को तोड़ते हैं (यानी आप किसी चीज के मूल्य को सत्यापित करते हैं जो कि परीक्षण के तहत ऑब्जेक्ट की निर्भरता ग्राफ में गहराई से नेस्टेड है), तो यह हो सकता है कि वे यूनिट परीक्षणों के बजाय वास्तव में एकीकरण परीक्षण हैं। दूसरे शब्दों में, अगर टेस्टा में आप यह मानते हैं कि एबीसीडी कुछ समान है, तो हो सकता है कि आप वास्तव में केवल ए के बजाय डी और ए का परीक्षण करने का प्रयास कर रहे हों ।
वैसे, जब आप कहेंगे
मैं तेज गति से लिखने और इतने सारे वैरिएबल का उपयोग न करने के लिए लॉ ऑफ डेमेटर को अक्सर तोड़ता हूं।
आपको पता होना चाहिए कि लेखन
var grab = myDependency.Grab;
var something = grab.Something;
var very = something.Very;
very.Deep();
वास्तव में इससे बेहतर कोई डिमेटर नहीं है
myDependency.Grab.Something.Very.Deep();
अगर आपका यही मतलब है।