2009-06-09 9 views
5

मुझे स्टाइलकॉप नियम SA1503 (CurlyBracketsMustNotBeOmitted) के साथ कठिन समय हो रहा है।स्टाइलकॉप नियम प्राप्त करना SA1503 CurlyBracketsMustNotBe अधिक लचीला होने के लिए सबमिट किया गया

public void SomeFunction(string someArg) 
{ 
    if (string.IsNullOrEmpty(someArg)) throw new ArgumentNullException("someArg"); 

    // rest of the function here 
} 

इस के पीछे तर्क है जब एक ही तर्क और/या तर्क पर चेक पर एकाधिक सत्यापन जांच कर खड़ी स्थान बचाने के लिए है:

मेरी कोड में मैं अक्सर एक पैटर्न इस प्रकार है। इस तरह के चेक में तर्क आमतौर पर सरल और संक्षेप में होता है और इसी तरह अपवाद के लिए भी फेंक दिया जाता है।

हालांकि, मैं करूंगा कभी नहीं लिखने

if (someConditional) 
    DoSomeStuff(); 

मैं हमेशा

if (someConditional) 
{ 
    DoSomeStuff(); 
} 

तो लिखते थे सारांश में:

  • उपयोग कर्ली कोष्ठक अगर अगर बयान में विभाजित किया गया है एकाधिक लाइनें
  • साधारण तर्क सत्यापन आदि के लिए घुंघराले ब्रैकेट का उपयोग न करें जो आसानी से (और पठनीय रूप से) एक लाइन

स्टाइलकॉप यहां मेरी सहायता कर सकता है?

+0

@ रिचर्ड ई: अंततः आप क्या कर रहे थे? मैं नियम को भंग नहीं करना चाहता, लेकिन मैं आपके पूर्ववर्ती पैटर्न लिखना चाहता हूं जैसे आप वर्णन करते हैं। –

+0

@Lieven: उस समय के लिए हमने इस नियम को छोड़ दिया है और हमारे एक लाइन सशर्त पर घुंघराले ब्रैकेट का उपयोग करने का फैसला किया है। इस अंत तक हमने स्टाइलकॉप नियम SA1501 को बंद कर दिया। –

+0

ऑफटॉपिक: अगर परिवर्तनीय खाली स्ट्रिंग है तो ArgumentNullException को फेंक न दें, आपको इसे केवल नल पैरामीटर के लिए उपयोग करना चाहिए –

उत्तर

7

जैसा कि पहले से ही उल्लेख किया गया है, असुविधाजनक स्टाइलकॉप नियम या तो चालू या बंद हैं और अनुकूलित नहीं किए जा सकते हैं। नियमों को अनुकूलित करने का एक आसान तरीका होना अच्छा होगा लेकिन दुर्भाग्य से आपको उन्हें स्क्रैच से लिखना होगा।

जिस तरह से मैंने स्टाइलकॉप का उपयोग किया है, उतने सारे नियमों को यथासंभव नियमों का उपयोग करने पर ध्यान केंद्रित करना है और जहां मुझे वास्तव में नियम (कोड प्रलेखन, उदाहरण के लिए) के साथ मौलिक समस्या है, तो मैं इसे बंद कर देता हूं। मैं कस्टम नियम लिखने की सीमा तक जाने के अपवादों के बारे में पर्याप्त चिंतित नहीं हूं।

+1

पूरी तरह से सहमत हैं; हमने पाया है कि "स्टाइलकोप कहां करता है और इसके साथ बहस करना बंद कर देता है" को समायोजित करने के कुछ सप्ताह "रवैये ने कई वर्षों के तनाव मुक्त, अत्यधिक पठनीय कोड का नेतृत्व किया है। –

3

स्टाइलकॉप (और मैं यहां सहमत हूं) चाहता है कि आप इसे कई लाइनों में विभाजित करें। यह पसंद नहीं है कि एक पंक्ति पर बयान (तर्कसंगत) अच्छे कारण के लिए - यह बयान के लिए एक असंगत उपयोग पैटर्न का कारण बनता है, जो कि पहले स्थान पर मौजूद नियमों में से एक कारण है।

आपके द्वारा दिखाए जा रहे व्यवहार को प्राप्त करने के लिए, आपको उस विशिष्ट मामले के लिए अपना स्वयं का अनुकूलित नियम लिखने के लिए एसडीके का उपयोग करने की आवश्यकता होगी, और उसके बाद डिफ़ॉल्ट नियम अक्षम करें।

+0

दिमाग बताता है कि क्या अच्छा कारण है? लंबे समय तक कार्यों की शुरुआत में बयान अगर मैंने सिंगल लाइन का उपयोग करना पसंद किया है। उदा: 'अगर (डेटा.empty) वापसी;' 3 लाइनों के रूप में थोड़ा अजीब लग रहा है। – basher

+0

@ बाशर जैसा कि बताया गया है "यह बयानों के लिए एक असंगत उपयोग पैटर्न का कारण बनता है" - चाहे वह कोई समस्या हो या नहीं, तर्कसंगत है, लेकिन यह संभावित रूप से मूल्यवान कारण –

+0

पर्याप्त उचित है। धन्यवाद रीड। – basher

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