स्पष्ट else
ब्लॉक
मैं सभी बयानों को कवर करने वाले एक कंबल बयान के रूप में इससे सहमत नहीं हूं, if
लेकिन कई बार ऐसा होता है जब else
आदत से बाहर ब्लॉक जोड़ना अच्छी बात है।
एक if
बयान, मेरे दिमाग में, वास्तव में दो अलग-अलग कार्य शामिल हैं।
अगर हमें कुछ करना है, तो यहां करें।
इस तरह की सामग्री स्पष्ट रूप से एक भाग की जरूरत नहीं है else
।
if (customer.hasCataracts()) {
appointmentSuggestions.add(new CataractAppointment(customer));
}
if (customer.isDiabetic()) {
customer.assignNurse(DiabeticNurses.pickBestFor(customer));
}
और कुछ मामलों में जोड़ने पर जोर देकर else
गुमराह किया जा सकता है।
if (k > n) {
return BigInteger.ZERO;
}
if (k <= 0 || k == n) {
return BigInteger.ONE;
}
के रूप में ही नहीं है
if (k > n) {
return BigInteger.ZERO;
} else {
if (k <= 0 || k == n) {
return BigInteger.ONE;
}
}
भले ही यह कार्यात्मक रूप से समान हो। if
एक खाली के साथ पहला लिखना else
आपको दूसरे परिणाम तक ले जा सकता है जो अनावश्यक रूप से बदसूरत है।
यदि हम एक विशिष्ट स्थिति की जाँच कर रहे हैं, तो else
उस घटना को कवर करने के लिए आपको याद दिलाने के लिए एक खाली जोड़ना अक्सर एक अच्छा विचार है
// Count wins/losses.
if (doors[firstChoice] == Prize.Car) {
// We would have won without switching!
winWhenNotSwitched += 1;
} else {
// We win if we switched to the car!
if (doors[secondChoice] == Prize.Car) {
// We picked right!
winWhenSwitched += 1;
} else {
// Bad choice.
lost += 1;
}
}
याद रखें कि ये नियम तभी लागू होते हैं जब आप नया कोड लिख रहे होते हैं । IMHO else
चेकइन से पहले खाली क्लॉस को हटा दिया जाना चाहिए।
के लिए टेस्ट true
, के लिए नहींfalse
फिर से यह सामान्य स्तर पर अच्छी सलाह है लेकिन कई मामलों में यह अनावश्यक रूप से जटिल और कम पठनीय होता है।
हालांकि कोड की तरह
if(!customer.canBuyAlcohol()) {
// ...
}
पाठक को परेशान कर रहा है, लेकिन इसे बना रहा है
if(customer.canBuyAlcohol()) {
// Do nothing.
} else {
// ...
}
कम से कम जितना बुरा है, उतना बुरा नहीं है।
मैंने कई साल पहले BCPL में कोडित किया था और उस भाषा में एक IF
खंड और एक UNLESS
खंड है, ताकि आप अधिक महत्वपूर्ण रूप से कोड कर सकें:
unless(customer.canBuyAlcohol()) {
// ...
}
जो काफी बेहतर है, लेकिन अभी भी सही नहीं है।
मेरी व्यक्तिगत प्रक्रिया
आम तौर पर, जब मैं नया कोड लिख रहा होता हूं, तो अक्सर मुझे याद दिलाने के else
लिए एक if
स्टेटमेंट में एक खाली ब्लॉक जोड़ देता हूं कि मैंने अभी तक उस घटना को कवर नहीं किया है। यह मुझे DFS
जाल से बचने में मदद करता है और यह सुनिश्चित करता है कि जब मैं कोड की समीक्षा करता हूं तो मुझे लगता है कि करना बाकी है। हालांकि, मैं आमतौर पर TODO
ट्रैक रखने के लिए एक टिप्पणी जोड़ता हूं ।
if (returnVal == JFileChooser.APPROVE_OPTION) {
handleFileChosen();
} else {
// TODO: Handle case where they pressed Cancel.
}
मुझे लगता है कि आम तौर पर मैं else
अपने कोड में शायद ही कभी उपयोग करता हूं क्योंकि यह अक्सर कोड गंध का संकेत दे सकता है।