कुछ तरीके हैं, सबसे सरल बस कुछ कार्यों को खराब करने के लिए है और यह पता सार विभिन्न परतों (यह वैसे भी किया जाना चाहिए यदि आप पाते हैं अपने आप को गहरी जा रहा है।)
if (/* Condition */) {
value = aFunctionSaysWhat();
} else {
// value = Error 1
}
....
value aFunctionSaysWhat(){
if (/* Condition */) {
return aSecondFunctionHere();
} else {
// return Error 2
}
}
मूल आधार है कि एक समारोह अमूर्त यदि संभव हो तो से एक परत पर रहना चाहिए, और एक काम करते है।
अगली संभावना यह सब बाहर निकलना है, यह आपके प्रारंभिक नेस्टेड विधि से बेहतर है, लेकिन मूल रूप से समान जटिलता है। यदि आपके पास केवल कुछ विकल्प हैं और आप अधिक जोड़ने की योजना नहीं बनाते हैं तो यह कार्यात्मक दृष्टिकोण से अधिक क्लीनर हो सकता है।
if(ErrorCondition1){
//Error 1
}else if(ErrorCondition2){
//Error 2
}else if(ErrorCondition3){
//Error 3
}else{
//Superb
}
अंत में, आप एक हैश की दुकान या वांछित जवाब के साथ नक्शा और अगर पूरी तरह से हटा सकते हैं, यह आपकी क्षमता पर निर्भर करता है को लागू करने की क्षमता कुछ परिणाम हैश करने के लिए:
Results = {'Result1':'Error1', 'Result2':'Error2', 'Result3':'Error3', 'Success':'Superb'}
return Results[ConditionHash(Condition)];
अरे आप निंजा! 47 सेकंड? :-( – Dragontamer5788
+1: "तीर सिर" नेस्टेड सशर्तों से पहले "अन्य" भाग की जांच करने के लिए शर्तों को परिवर्तित करके "अच्छा सिर" से बचने के लिए यह एक अच्छा अभ्यास है। त्रुटि जांच की एक रैखिक धारा को नेस्टेड से पढ़ने और समर्थन करना काफी आसान है सफलता की जांच की धारा – David
@ डेविड: नोड। मेरे विश्वविद्यालय में से एक सीएस प्रोफेसरों ने 'वापसी की तरह चीजों से नफरत की,' एक समारोह के बहुत अंत को छोड़कर क्योंकि यह "गोटो" जैसा था। इसलिए मैंने उसे इस तरह के कोड को बंद करने के लिए लिखा , और वास्तव में यह पता चला कि मैं इसे नेस्टेड सशर्तों के हास्यास्पद स्तरों को कैसे पढ़ता हूं। – cdhowie