हालांकि सवाल थोड़ी देर पहले उत्तर दिया गया है, मैं हाल ही में एक ही समस्या के बारे में सोच की है। औपचारिक कोड अनुबंध (स्वचालित सत्यापन या चेक के साथ) एक अच्छा विचार प्रतीत होता है, लेकिन आम तौर पर, उनकी सत्यापन क्षमता काफी सीमित होती है, और सरल चेक जैसे शून्य या खाली-स्ट्रिंग जांच के लिए, उन्हें केवल उतना ही कोड (या अधिक) पुराने ढंग से चेक की तुलना में।
:
विडंबना यह है कि स्ट्रिंग-मामले के लिए मेरी राय में सर्वश्रेष्ठ उत्तर वास्तव में एक या दो वर्गों है कि एक स्ट्रिंग है, अशक्त खाली या सफेद स्थान नहीं होने की जाँच की गई है लपेट, और इस उदाहरण के आसपास पारित है
public class NonEmptyString : IComparable<NonEmptyString>, ...
{
private readonly string _value;
public NonEmptyString(string value)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
if (value.Length == 0)
{
throw NewStringIsEmptyException("value");
}
_value = value;
}
public string Value
{
get { return _value; }
}
...
}
public class NonWhiteSpaceString : NonEmptyString
{
....
}
ज़रूर, इन उदाहरणों के आसपास गुजर आप अगर वे खुद को शून्य कर रहे हैं की जाँच करने के होने से नहीं रोकता है, लेकिन यह कुछ बड़ा लाभ मिला है:
- आप खाली या सफेद पर जांच करने की जरूरत नहीं है अंतरिक्ष स्ट्रिंग बार-बार, जो स्ट्रिंग में स्थितियों में त्रुटि प्रवण हो सकती है बहुत पास हो गया है।
- जैसा कि मैंने अपने कार्यान्वयन में किया है, शून्य के लिए जांच एक खाली मूल्य (या व्हाइटस्पेस मान) की जांच करने से कुछ अलग है, क्योंकि आप पहले मामले में एक विशिष्ट ArgumentNullException फेंकना चाहते हैं, और दूसरे में कुछ ArgumentException फेंकना चाहते हैं।
- यह स्पष्ट रूप से स्ट्रिंग के मूल्य पर बाधा को इंगित करता है, जैसे किसी भी रैपिंग क्लास को करना चाहिए। असल में, यदि आपके पास ऐसी स्ट्रिंग है जिसमें कोई बाधा है और यह बहुत से पास हो जाती है, तो मैं हमेशा इसे उस कक्षा में लपेटने की अनुशंसा करता हूं जो चेक को समाहित करता है और शेष कोड को परेशानी से बाहर रखता है। इसका एक अच्छा उदाहरण तार हैं जो एक निश्चित नियमित अभिव्यक्ति को पूरा करना चाहिए। हालांकि, मैं यहां प्रश्न से अलग हो रहा हूं ...
स्रोत
2011-11-08 08:01:37
आपको यह लिंक [गुणों और विधि अवरोध का उपयोग करके तर्क सत्यापन] (http://www.codinginstinct.com/2008/05/argument- सत्यापन-उपयोग-attributes.html) उपयोगी – Joe