से अतिरिक्त जानकारी वापस देने के लिए सर्वोत्तम अभ्यास मेरे पास एक कक्षा कर्मचारी है। मैं इसे सत्यापित करने से पहले इसे सत्यापित करने में सक्षम होना चाहता हूं() यह सुनिश्चित करने के लिए कि सभी फ़ील्ड मान्य मानों के साथ आबादी में हैं। कक्षा का उपयोगकर्ता सहेजने से पहले Validate() को कॉल कर सकता है() या वे सीधे सेव() को कॉल कर सकते हैं और सहेजें() फिर Validate() को कॉल करेंगे और सत्यापन विफल होने पर शायद अपवाद फेंक दें।वैध कार्य
अब, मेरा (मुख्य) प्रश्न यह है;
यदि मेरा मान्य() फ़ंक्शन एक साधारण बूल देता है तो मैं कक्षा के उपयोगकर्ता को गलत कहां बता सकता हूं, यानी "ईमेल भरना नहीं है", "आईडी अद्वितीय नहीं है" आदि। इसके प्रयोजनों के लिए मैं बस चाहता हूं मानव उपयोगकर्ता को पास करने के लिए त्रुटि तार, लेकिन सिद्धांत एक ही है यदि मैं त्रुटि कोड की एक सूची चाहता था (सिवाय इसके कि बिटमैप का उपयोग अधिक तार्किक है)।
- मैं अपने मान्य कार्य में एक आउट पैरामीटर का उपयोग कर सकता हूं लेकिन मुझे लगता है कि यह इस पर फंस गया है।
- एक बूल लौटने की बजाय, मैं अपने फ़ंक्शन से एक स्ट्रिंग सरणी वापस कर सकता हूं और केवल खाली होने पर परीक्षण करता हूं (मतलब कोई त्रुटि नहीं है) - लेकिन यह गन्दा लगता है और सही नहीं है।
- मैं इस विधि से वापस लौटने के लिए एक स्ट्रक्चर बना सकता हूं, जिसमें एक बूल और त्रुटि संदेशों के साथ एक स्ट्रिंग सरणी शामिल है, लेकिन बस घबराहट लगती है।
- मैं एक बूल के बजाय त्रुटि कोड का बिटमैप वापस कर सकता हूं और इसे देख सकता हूं, लेकिन ऐसा लगता है कि यह अत्यधिक है।
- मैं ऑब्जेक्ट पर सार्वजनिक संपत्ति "प्रमाणीकरण त्रुटि" बना सकता हूं जो त्रुटियों को पकड़ लेगा। हालांकि, यह मुझे पढ़ने से पहले या स्पष्ट रूप से संपत्ति() से वैध रूप से कॉल करने से पहले Validate() को कॉल करने पर भरोसा करेगा जो थोड़ा अपर्याप्त है।
मेरा विशिष्ट कार्यक्रम सी # में है लेकिन यह काफी सामान्य "सर्वोत्तम अभ्यास" प्रश्न जैसा दिखता है और मुझे यकीन है कि मुझे इसका जवाब पता होना चाहिए। किसी भी सलाह आभारी रूप से प्राप्त किया।
+1 - आपने मुझे इसे हराया। –
आप सही हैं, मुझे अपने त्रुटि संदेशों के बारे में संरचित किया जाना चाहिए और उनके लिए केंद्रीय भंडार होना चाहिए जहां मैं उन्हें "उपयोगकर्ता के अनुकूल" संस्करण आदि के लिए देख सकता हूं। – Frans
केवल इस समाधान के साथ मुझे नाइट-पिक है कि मैं नहीं चाहता '[ध्वज]' के साथ सजाए गए पहले enum के मान के रूप में '0' का उपयोग करें ... – IAbstract