स्थानों पर जहां मैं वैध संकेत के लिए जाँच से पहले मैं उनके साथ एक कार्रवाई करने के हैं; इन चेकों को कभी-कभी बहुत गहराई से घोंसला जा सकता है।नेस्टेड अगर (x) चेक - इसे लिखने का बेहतर तरीका?
उदाहरण के लिए, मुझे लगता है मैं वास्तव में इस के रूप को पसंद नहीं है
if (a)
{
if (a->b())
{
if (a->b()->c())
{
a->b()->c()->DoSomething();
}
}
}
है। क्या इसे कुछ और पठनीय में बदलने का कोई तरीका है? आदर्श रूप से,
if (a && a->b() && a->b()->c())
{
...
}
बहुत अच्छा होगा, लेकिन स्पष्ट रूप से काम नहीं करेगा।
संपादित करें - उदाहरण है कि मैं डाल काम करता है के रूप में सभी ने कहा है NVM। मैंने यह देखने के लिए परीक्षण किया कि यह काम करता है, लेकिन मेरे परीक्षण में मेरे कोड में एक बग था। ओह!
वह काम क्यों नहीं करेगा? –
यह स्पष्ट रूप से * आपके द्वारा पोस्ट किए गए उदाहरण में काम करेगा। क्या आपके द्वारा छोड़े गए 'अन्य' मामलों में कुछ हो रहा है? –
आपको क्या लगता है कि काम नहीं करेगा? शॉर्ट-सर्किट मूल्यांकन बहुत अधिक गारंटी देता है कि दोनों का मतलब एक ही बात है (जब तक कि आपने 'ऑपरेटर और' 'ओवरलोड नहीं किया हो)। –