मेरे पास अक्सर कॉल पदानुक्रम होते हैं जिसमें सभी विधियों को समान पैरामीटर की आवश्यकता होती है। अगर मैं उन्हें आवृत्ति स्तर (कक्षा के सदस्य) पर नहीं रखना चाहता हूं तो मैं हमेशा से पूछता हूं कि क्या प्रत्येक अर्थ में उनकी वैधता की जांच करना अर्थपूर्ण है।फ़ंक्शंस में दोहराए गए पैरामीटर चेक
उदाहरण के लिए:
public void MethodA(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do some thing unrelated to o
MethodB(o);
// Do some thing unrelated to o
}
public void MethodB(object o){
if(null == o){
throw new ArgumentNullException("o");
}
// Do something with o
}
एक पैरामीटर का उपयोग करता है Method
, तो इसकी स्पष्ट, मैं MethdoB में वहाँ और भी वैधता की जांच करने के लिए है। लेकिन जब तक मेथड MethodB
को देने से o
के साथ कुछ और नहीं करता है, तो MethodA
में वैधता की जांच करना भी अच्छा अभ्यास है।
MethodA
में भी जांच करने का लाभ यह हो सकता है कि कैली द्वारा बुलाए गए तरीके में अपवाद फेंकता है, यह अच्छा है, लेकिन क्या यह आवश्यक है? कॉल स्टैक यह भी बताएगा। शायद सार्वजनिक, आंतरिक, संरक्षित लेकिन निजी तरीकों से इसका अर्थपूर्ण नहीं है?
मैंने शून्य उदाहरण को एक उदाहरण के रूप में लिया, लेकिन इंडेक्स-सत्यापन या सीमा सत्यापन स्वयं प्रश्न में पड़ते हैं, हालांकि मुझे लगता है कि अनावश्यक कोड के खतरे की वजह से सीमाएं हैं। तुम क्या सोचते हो?
अद्यतन
AakashM का जवाब मैंने देखा है कि मैं करने के लिए कम सटीक था के माध्यम से। MethodA
न केवल MethodB
पर कॉल करता है, यह अन्य चीजें भी करता है लेकिन o
से संबंधित नहीं है। मैंने इसे स्पष्ट करने के लिए एक उदाहरण जोड़ा। धन्यवाद आकाशम।
जहां इनपुट मान का उत्पादन होता है - इसका मतलब कॉलर पर होता है? मेरे उदाहरण को लिखने में मैंने जो उदाहरण दिमाग में लिखा था, वह यह था कि विधि ए और बी कक्षा के बाहर से दोनों ही पहुंच योग्य हैं और दोनों में से एक को कॉल करने के लिए वैध है (मेथडए विधिवत बी से थोड़ा अधिक है) – HCL
हाँ। मेरा संपादन देखें। – Mau