2010-05-13 7 views
7

मेरे पास आपके लिए एक साधारण सवाल है (मुझे आशा है) :)सीआरयूडी संचालन; क्या आप सूचित करते हैं कि डालने, अपडेट इत्यादि अच्छी तरह से चले गए हैं या नहीं?

डेटा पर सीआरयूडी संचालन करते समय मैंने हमेशा "वापसी" प्रकार के रूप में शून्य का उपयोग किया है।

उदा।

public void Insert(IAuctionItem item) { 
    if (item == null) { 
     AuctionLogger.LogException(new ArgumentNullException("item is null")); 
    } 

    _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item); 
    _dataStore.DataContext.SubmitChanges(); 
} 

और फिर इस कोड considen:

public bool Insert(IAuctionItem item) { 
    if (item == null) { 
     AuctionLogger.LogException(new ArgumentNullException("item is null")); 
    } 

    _dataStore.DataContext.AuctionItems.InsertOnSubmit((AuctionItem)item); 
    _dataStore.DataContext.SubmitChanges(); 

    return true; 
} 

यह वास्तव में सिर्फ है कि क्या आप को सूचित करना चाहिए कि कुछ डाला गया था (और अच्छी तरह से चला गया है) या नहीं करने के लिए नीचे आता है इस कोड पर विचार करें?

उत्तर

15

मैं आमतौर पर वहां पहले विकल्प के साथ जाता हूं।

अपने कोड को देखते हुए, अगर डालने के साथ कुछ गलत हो जाता है तो वहां एक अपवाद फेंक दिया जाएगा।

चूंकि आपके पास डेटा एक्सेस कोड के चारों ओर कोई प्रयास/पकड़ ब्लॉक नहीं है, इसलिए कॉलिंग कोड को उस अपवाद को संभालना होगा ... इस प्रकार यह पता चलेगा कि यह क्यों और क्यों विफल हुआ। यदि आप अभी सच/गलत लौट आए हैं, तो कॉलिंग कोड को कोई जानकारी नहीं होगी कि विफलता क्यों हुई (यह देखभाल कर सकती है या नहीं)।

+0

आपने 5 सेकंड तक एक ही जवाब देने के लिए हराया :-) –

+0

इसके अलावा, एक अपवाद केवल "झूठी" की तुलना में अधिक विस्तृत जानकारी प्रदान करता है। –

+0

आप पूरी तरह से सही हैं। मुझे निश्चित रूप से यहां एक कोशिश/पकड़ की जरूरत है। यह सिर्फ इस कोड के डेमो कारणों के लिए था। बहुत बढ़िया जवाब! – danielovich

0

मुझे लगता है कि यह निर्भर करता है। इमेजिंग कि आपका उपयोगकर्ता फ़ोरम पर एक नई पोस्ट जोड़ना चाहता है। और जोड़ना किसी कारण से असफल हो जाता है, तो यदि आप उपयोगकर्ता को नहीं बताते हैं, तो वे कभी भी कुछ गलत नहीं जानते। सबसे अच्छा तरीका उनके लिए एक अच्छा संदेश के साथ एक और अपवाद फेंकना है

और यदि यह उपयोगकर्ता से संबंधित नहीं है, और आप इसे पहले ही डेटाबेस लॉग में लॉग आउट करते हैं, तो आपको वापसी की परवाह नहीं करनी चाहिए या

नहीं
0

मुझे लगता है कि ऑपरेशन अच्छी तरह से चला गया या नहीं, तो उपयोगकर्ता को सूचित करना एक अच्छा विचार है। भले ही आप अपने कोड का परीक्षण करें और बॉक्स से बाहर निकलने का प्रयास करें, यह संभव है कि इसके अस्तित्व के दौरान सॉफ़्टवेयर को ऐसी समस्या का सामना करना पड़ेगा जिसकी आपने आवश्यकता नहीं की थी, इस प्रकार यह गलत तरीके से व्यवहार कर रहा था। अधिसूचनाओं का उपयोग, मेरी राय के लिए, उपयोगकर्ता को कार्रवाई करने की अनुमति देता है, यदि योजना विफल होने पर आपको पसंद है तो योजना बी का एक प्रकार। यह क्रिया या तो या तो एक साधारण काम हो सकती है, अन्य लोगों को आईटी विभाग से सूचित करें ताकि वे इसे ठीक कर सकें। मैं यह जानने के बजाय उस अतिरिक्त "ठीक" बटन पर क्लिक करना चाहता हूं कि बहुत देर हो चुकी है।

1

मुझे लगता है कि यदि यह "आइटम == नल" है जिसे आपने "झूठा" वापस कर दिया है तो यह अधिक समझ में आएगा। इससे संकेत मिलेगा कि यह एक ऐसा मामला था जिसे आप अकसर नहीं होने की उम्मीद करते हैं, और इसलिए आप इसे अपवाद नहीं उठाना चाहते हैं लेकिन कॉलिंग कोड "झूठी" वापसी मूल्य को संभाल सकता है।

मानकों के रूप में, आप "सत्य" वापस आ जाएंगे या कोई अपवाद होगा - जो वास्तव में आपको बहुत मदद नहीं करता है।

0

यदि आपको अधिक डेटा की आवश्यकता है - इसके लिए चर का उपयोग करें, क्योंकि आपको विशिष्ट डेटा की आवश्यकता होगी (और यह एक से अधिक संख्या/स्ट्रिंग हो सकती है) और एक उत्तेजना तंत्र एक अच्छा समाधान है त्रुटियों को संभालना

तो .. अगर आप को पता है, कि कितने पंक्तियों प्रभावित एक एसपी ect ... कुछ लौटे, तो चाहते हैं - एक वापसी प्रकार आप को सीमित कर देगा ..

1

ढांचे आप में होना होता लड़ने मत करो यदि आप सी कोड लिख रहे हैं, जहां रिटर्न वैल्यू त्रुटियों को संचारित करने के लिए सबसे आम तंत्र हैं (निर्माण में बेहतर निर्मित की कमी के लिए), तो इसका उपयोग करें।

।नेट बेस क्लास लाइब्रेरी त्रुटियों को संवाद करने के लिए अपवादों का उपयोग करते हैं और उनकी अनुपस्थिति का मतलब है कि सबकुछ ठीक है। चूंकि लगभग सभी कोड बीसीएल का उपयोग करते हैं, इसमें से अधिकांश अपवादों की अपेक्षा करने के लिए लिखे जाएंगे, सिवाय इसके कि जब यह पुस्तकालय में लिखा जाता है जैसे कि सी # सी अपवादों के लिए कोई समर्थन नहीं था, तो प्रत्येक आमंत्रण को अगर (! MyObject में लपेटना होगा) कुछ भी) {System.Writeline ("डॉन");} ब्लॉक।

अगले डेवलपर के लिए अपने कोड का उपयोग करने के लिए (जो कुछ वर्षों बाद आप भूल गए हैं कि आप मूल रूप से इसे कैसे करते हैं), यह होने का लाभ उठाने के लिए सभी कॉलिंग कोड लिखना शुरू करना दर्द होगा वापसी मानों के रूप में पारित त्रुटि शर्तों, आउटपुट पैरामीटर में मानों में परिवर्तन, कस्टम घटनाओं के रूप में, कॉलबैक के रूप में, कतार में संदेश या विफलता या इसकी कमी के संवाद के अन्य कल्पनाशील तरीकों के रूप में।

संबंधित मुद्दे

 संबंधित मुद्दे