में रिटर्न स्टेटमेंट का उपयोग करके टालना/छोटा करना चाहिए, वर्तमान सॉफ़्टवेयर में मैं काम कर रहा हूं, मैं इस पैटर्न को काफी व्यापक रूप से देख रहा हूं और ऐसा लगता है कि वे जितना संभव हो सके रिटर्न स्टेटमेंट से बचने की कोशिश कर रहे हैं। यहां तक कि कोड में कुछ स्थानों पर यह लगभग चरम पर ले जाया जाता है।हमें जावास्क्रिप्ट प्रवाह नियंत्रण
मैंने किसी भी समय पहले सुना है कि वापसी विवरणों को कम किया जाना चाहिए या इससे बचा जाना चाहिए, लेकिन मुझे इस विचार की सटीक कारण या उत्पत्ति को याद नहीं किया जा सकता है (या खोज)। मेरा मानना है कि यह कुछ पीएल में कुछ प्रदर्शन निहितार्थ के कारण था।
मैं व्यक्तिगत रूप से इसका पालन नहीं करता क्योंकि यह कोड को पढ़ने योग्य नहीं बनाता है, लेकिन इसे संदेह का लाभ दे रहा है, मुझे उत्सुकता है कि इस पैटर्न का उपयोग प्रदर्शन के संदर्भ में जावास्क्रिप्ट में इसकी योग्यता है या नहीं।
if (err) {
if (err.message) {
message = err.message;
} else {
if (err.errorCode) {
message = err.errorCode;
} else {
message = "Unknown error";
}
}
} else {
message = "Unknown error.";
}
deferred.reject(message);
अगर मैं तय करने के लिए थे, मैं लापरवाही से वापसी कथन इस तरह अनुक्रम समाप्त करने के लिए उपयोग करेंगे:
if(!err || (!err.message && !err.errorCode)){
deferred.reject("Unknown error.");
return;
}
if(err.message){
deferred.reject(err.message);
return;
}
if(err.errorCode){
deferred.reject(err.errorCode);
}
वहाँ दूसरा एक से अधिक पहले पैटर्न में फायदे हैं?
एक समारोह केवल एक चीज करना चाहिए। 'अगर' स्थिति आमतौर पर मतलब है कि आपका कार्य एक से अधिक चीजें कर रहा है। –
कई रिटर्न का उपयोग करने में समस्या यह है कि यह उस बिंदु पर, उसके ठीक उसी बिंदु पर आपके कार्य को छोड़ देता है। शायद आपके पास क्लीनअप कोड है, शायद आपको ऑब्जेक्ट्स मुक्त करना होगा, शायद आपको और चीजों की जांच करनी होगी ... कोड के ब्लॉक को अचानक छोड़ना लगभग हमेशा एक बुरा विचार है। –
@Andrey आपने SO पर एक और उत्तर के लिए लिंक प्रदान किया है, जो कि अच्छा है, लेकिन यह 'जेएस' है)) और उदाहरण के लिए, जेएस में आपको कॉलबैक कॉल करने पर हर बार वापस जाना होगा ... –