मैं पूरी तरह से @ कार्ल-manaster प्रतिक्रिया का समर्थन है, लेकिन मुझे लगता है हम आगे जा सकते हैं।
मेरे दृष्टिकोण निम्नलिखित सिद्धांतों पर आधारित है:
- कोई किसी और बयान होना चाहिए।
- जटिल तार्किक अभिव्यक्तियों को पठनीयता बढ़ाने के लिए निजी तरीकों से निकाला जाना चाहिए।
- टेस्ट स्वीट कि सभी संभव शाखाओं को शामिल किया गया है। यही कारण है कि लोग चक्रीय जटिलता के बारे में चिंतित हैं। और यही कारण है कि विधि में निकालने में मदद करता है।
उदाहरण कोड से, यह स्पष्ट नहीं है कि यह विधि वास्तव में क्या करती है, इसलिए मैंने कुछ यादृच्छिक नाम उठाए और लेखक को इसे और अधिक वैध में बदलना चाहिए।
मुझे कोई परीक्षण और समय नहीं था, इसलिए मैं 100% यह काम करेंगे यकीन नहीं है, लेकिन बदलाव की श्रृंखला के बाद मैं निम्नलिखित कोड के साथ समाप्त हो गया है:
function(cid, pid, cSubId, pSubId) {
return cmpScope.equals(GLOBAL) && isValidSomething() && isValidSomethingElse();
}
कहाँ निकाले तरीके हैं:
function isValidSomething() {
if(cid != pid) {
return false;
}
if (cmpScope.equals(V) || cmpScope.equals(X) || cmpScope.equals(Y)) {
return true;
}
return cmpScope.equals(Z) && cSubId != pSubId;
}
function isValidSomethingElse() {
return cmpScope.equals(Z) && cid != pId;
}
यह सिर्फ एक उदाहरण है और आप इसे और भी बेहतर बना सकते हैं।
फिर, यह का मुख्य बिंदु ताकि आप इसे "की तरह एक अच्छी तरह से लिखा गद्य" पढ़ सकते हैं अच्छा नाम के साथ निजी तरीकों है। इस कल्पना कीजिए:
function isMyCarValid() {
return isHaveWheels() && isHaveFuel() && isHaveDriver();
}
स्रोत
2015-11-17 17:12:34
पीआईडी और पीआईडी (देखें मैं और मैं) एक mystype है? वैसे भी IMHO कोड ठीक दिखता है, इसे निचोड़ने की कोई आवश्यकता नहीं है। – Willmore