"अगर" बयान लेखन के विभिन्न तरीकों

वोट
19

मैं एक लिख के विभिन्न तरीकों को देखा है ifबयान।

कौन सा आप पसंद करते हैं और क्यों?

उदाहरण 1:

if (val % 2 == 1){output = “Number is odd”;}else{output = “Number is even”;} 

उदाहरण 2:

if (val % 2 == 1)
{
    output = “Number is odd”;
}
else
{
   output = “Number is even”;
}

उदाहरण 3:

if (val % 2 == 1)
output = “Number is odd”;
else
output = “Number is even”;

उदाहरण 4:

if (val % 2 == 1){
output = “Number is odd”;
} else {
output = “Number is even”;
}

इसी प्रकार के प्रश्न:

क्यों यह एक बुरा व्यवहार घुंघराले ब्रेसिज़ छोड़ माना जाता है?

12/03/2009 को 16:27
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


20 जवाब

वोट
44

इस तरह के मामलों के लिए, वहाँ भी सशर्त ऑपरेटर है:

output = (val % 2 == 1) ? "Number is odd" : "Number is even";

एक "अगर" मैं संस्करण 2 या 4 संस्करण, अपने ब्रेसिंग शैली के बाकी के आधार पर प्रयोग करेंगे आप निश्चित रूप से उपयोग करने के लिए जा रहे हैं। (काम में मैं 4 का उपयोग करें; निजी परियोजनाओं के लिए मैं 2 का उपयोग) मुख्य बात वहाँ भी एकल बयान के आसपास ब्रेसिज़ हैं कि है।

Btw, परीक्षण समता के लिए इसका इस्तेमाल करने से थोड़ा जल्दी है:

if ((val & 1) == 1)
12/03/2009 को 16:32
का स्रोत उपयोगकर्ता

वोट
16

संस्करण 2. मैं हमेशा ब्रैकेट शामिल आप एक बाद की तारीख में में कोष्ठक लगाने के बारे में चिंता करने की ज़रूरत नहीं होगी अगर आप कभी भी सशर्त के तहत एक से अधिक पंक्ति लगाने की जरूरत है क्योंकि। यही कारण है कि, और यह सुनिश्चित करें कि आपके अगर बयानों के समान संरचना वाले जो मदद करता है जब आप एक निश्चित अगर बयान के लिए कोड को स्कैन कर रहे हैं कि बनाता है।

12/03/2009 को 16:33
का स्रोत उपयोगकर्ता

वोट
10

मैं संस्करण 2 का उपयोग करें।

घुंघराले ब्रेसिज़ उपयोग करने के लिए एक कारण और अधिक स्पष्ट हो जाता है कि यदि आप एक और को नहीं है।

if(SomeCondition)
{
  DoSomething();
}

आप तो कोड की एक और पंक्ति जोड़ने की जरूरत है, तो आप कम एक मुद्दा होने की संभावना है:

if(SomeCondition)
{ 
  DoSomething();
  DoSomethingElse();
}

ब्रेसिज़ के बिना आप कर सकते हैं यह किया है:

if(SomeCondition)
   DoSomething();
   DoSomethingElse();
12/03/2009 को 17:47
का स्रोत उपयोगकर्ता

वोट
9

मैं व्यक्तिगत रूप से पसंद करते हैं 3. अतिरिक्त घुंघराले ब्रेसिज़ बहुत ज्यादा अनावश्यक दृश्य शोर और रिक्त स्थान को जोड़ सकते हैं।

मैं कुछ हद तक 2/4 के लिए तर्क को देखने के कीड़े को कम कर सकते हैं, लेकिन मैं एक बग था व्यक्तिगत रूप से कभी नहीं किया है क्योंकि सोच अतिरिक्त लाइनें एक अगर बयान के अंदर थे। मैं प्रयोग करते हैं सी # और दृश्य स्टूडियो तो मेरे कोड हमेशा बहुत अच्छी तरह से स्वरूपित रहता है। हालांकि यह एक समस्या अगर मैं एक अधिक नोटपैड शैली प्रोग्रामर था हो सकता है।

12/03/2009 को 18:40
का स्रोत उपयोगकर्ता

वोट
5

इनमे से कोई भी नहीं।

मेरी निष्पादन ब्लॉक केवल एक लाइन (भले ही बयान के लिए एक बहुत बड़ा है) नहीं है तो फिर मैं ब्रेसिज़ का प्रयोग नहीं करते, लेकिन मैं कर यह इंडेंट, # 3 के समान

if (num > 3)
     print "num is greater than 3";
else
     print "num is not greater than 3";

कई बयान है कि घुंघराले ब्रेसिज़ की जरूरत नहीं है के साथ एक उदाहरण:

if (num > 3)
    for (int i = 0; i < 100)
        print i + "\n";
else
    print "booya!";

जिसके अनुसार, जॉन स्कीट के इस सवाल में प्रतिक्रिया के लिए सबसे अच्छा है

12/03/2009 को 20:15
का स्रोत उपयोगकर्ता

वोट
5

मैं # 2 पसंद करते हैं। आसान पठनीयता।

12/03/2009 को 16:30
का स्रोत उपयोगकर्ता

वोट
3

यह सबसे अच्छा चयन करने के लिए की तुलना में एक समान होना चाहिए अधिक महत्वपूर्ण है।

इन शैलियों अलग फायदे और कमियां हैं, लेकिन कोई भी एक परियोजना या यहां तक ​​कि एक संकलन इकाई के भीतर या एक समारोह के भीतर उन्हें मिश्रण के रूप में के रूप में बुरा है।


त्रिगुट ऑपरेटर इस विशिष्ट कोड के लिए स्पष्ट विकल्प है। सरल एकल कथन के लिए if/elseकी है कि अन्यथा व्यक्त नहीं किया जा सकता है, मैं एक ठीक से दांतेदार मामले 3 पसंद करते हैं:

if (val % 2 == 1)
    output = “Number is odd”;
else
    output = “Number is even”;

मैं पीछे "हमेशा ब्रेसेस का उपयोग करें" प्रेरणा समझते हैं, लेकिन मैं व्यक्तिगत रूप से कभी नहीं उनके चूक ने काट लिया गया है (ठीक है, एक बार। एक मैक्रो के साथ।)

ऊपर शैलियों से, मैं चुनते थे (2)। (4) ठीक हो, तो "ठीक से" इंडेंट होगा।
(1) मैं एक युवा डेवलपर हैं जो उम्मीद है कि की "कॉम्पैक्ट कोड", या कोई है जो एक सभ्य मॉनिटर वहन नहीं कर सकते बाहर बढ़ेगा से जोड़कर देखते हैं चाहते हैं। फिर भी, मैं इसके साथ जाना चाहते हैं, तो यह स्थानीय शैली थी।

12/03/2009 को 22:36
का स्रोत उपयोगकर्ता

वोट
3

मैं त्रिगुट ऑपरेटर के साथ सहमत हैं। बहुत नीचे कोड है कि मैं पार चलो में उपयोग किया है, और मुझे लगता है कि यह बहुत आसान है और अच्छे है सभी अतिरिक्त कोष्ठक और इंडेंट यह एक अगर / किसी और बयान लिखने के लिए ले जाता है की तुलना में पढ़ने के लिए।

12/03/2009 को 18:20
का स्रोत उपयोगकर्ता

वोट
2

यह अजीब कोई भी इस उल्लेख किया है कि बताया गया है:

if ( x == 1) {
   ...
}
else {
   ...
}

मेरे लिए, यह केवल सही तरीका है :-) निश्चित रूप से,

12/03/2009 को 21:12
का स्रोत उपयोगकर्ता

वोट
2

मैं संस्करण 2 का उपयोग करें।

12/03/2009 को 16:30
का स्रोत उपयोगकर्ता

वोट
0

ब्रेसिज़ के साथ प्रयोग का सुझाव दिया है, मैं ब्रेसिज़ के बिना यदि किसी और बयान के साथ कुछ मुद्दे को देखा है, (मैं बिल्कुल याद नहीं है) यानी वक्तव्य के तहत अगर क्रियान्वित नहीं किया गया था, जब मैं ब्रेसिज़ के साथ एक ही जोड़ा उसके बाद ही काम किया। (दृश्य का उपयोग करना स्टूडियो और सी # 4.0)।

28/10/2013 को 00:33
का स्रोत उपयोगकर्ता

वोट
0

एकल लघु बयान:

if (condition) output = firstChoice;
else doSomethingElse();

एकाधिक या लंबी बयान

if (condition) {
   output = firstChoice;
   ...
} else {
   ...
}
12/03/2009 को 22:46
का स्रोत उपयोगकर्ता

वोट
0

संस्करण # 2 मेरे लिए - सबसे आसान देखने के लिए, सबसे आसान देखने के लिए जहां अगर प्रारंभ और समाप्त होता है, और के लिए एक ही है, तो आप कोष्ठक में डाल आप एक से अधिक बयान जोड़ना चाहते हैं के बारे में चिंता करने की ज़रूरत न पढ़ने के लिए, आसान।

12/03/2009 को 21:31
का स्रोत उपयोगकर्ता

वोट
0

निजी तौर पर, वहाँ दो तरीकों कि मैं अच्छा अभ्यास किया जा रहा है लगता है कर रहे हैं:

अगर ब्लॉक के लिए, केवल इस तरह से है:

if(...)
{
    // ...
}
else if (...)
{
    // ...
}
else
{
    // ...
}

यह सबसे सुरक्षित और सबसे सुबोध तरह से करता है, तो-और कुछ-ब्लॉक में लिखने के लिए है।

एक लाइनर्स (सच एक liners कि एक लाइन पर सुबोध कर रहे हैं) के लिए, आप त्रिगुट ऑपरेटर का उपयोग कर सकते हैं।

var objectInstance = condition ? foo : bar;

// Or the binary operator when dealing with null values
var objectInstance = condition ?? foo;

आप तरीकों कि कुछ है कि वर्तमान नियुक्ति मदद नहीं कर नहीं बुलाना चाहिए।

मैं ऊपर कहा गया है उन लोगों की तुलना किसी भी अन्य तरीके से उपयोग नहीं होता।

12/03/2009 को 20:19
का स्रोत उपयोगकर्ता

वोट
0

मैं एक मामूली परिवर्तन के साथ एक # 2 का उपयोग

if (condition1) 
{
      doStuff();
} else 
{
      doSomethingElse();
}
12/03/2009 को 20:11
का स्रोत उपयोगकर्ता

वोट
0

व्यक्तिगत तौर पर मैं संस्करण 2 पसंद करते हैं लेकिन चूंकि यह केवल formating है यह कोई फर्क नहीं पड़ता। का प्रयोग करें जो आप और आपकी टीम के सदस्यों के लिए सबसे अच्छा पढ़ी जा सकती है!

12/03/2009 को 20:10
का स्रोत उपयोगकर्ता

वोट
0

मैं हमेशा # 2 का उपयोग करेंगे। # 4 वास्तव में एक भयानक लेआउट है और केवल कोई है जो मानता है कि एक विधि लंबाई में एक स्क्रीन आकार में होना चाहिए और उस में रटना करने के बजाय कोड refactor कुछ भी करेंगे द्वारा किया जा होगा !!!

12/03/2009 को 20:09
का स्रोत उपयोगकर्ता

वोट
0

मैं उन्हें इस क्रम में प्रयोग करेंगे: 1) त्रिगुट ऑपरेटर 2) उदाहरण के लिए 3, लेकिन ठीक से 3) या तो 2 या 4 इंडेंट, वे मूल रूप से एक ही हैं। मैं के साथ जो कुछ भी सामान्य styl था जहाँ मैं काम किया जाना होगा।

मैं के साथ क्या जेक अनावश्यक घुंघराले ब्रेसिज़ को छोड़ते हुए के बारे में कहा सहमत हैं। मैं वजह से या देखा नए कोड की वजह से एक बग जोड़ा जा रहा है और किसी को सोच वे एक का हिस्सा थे अगर बयान पर वे घुंघराले ब्रेसिज़ की कमी की वजह से नहीं थे कभी नहीं किया है। किसी को कभी ऐसा किया है, तो मैं उन्हें निर्दयता से उपहास होगा।

तुम मुझे नंबर 1 उपयोग करने के लिए प्राप्त करने के लिए मुझे यातना करना होगा।

12/03/2009 को 18:53
का स्रोत उपयोगकर्ता

वोट
0

उदाहरण 2 शक कम से कम त्रुटि प्रवण दृष्टिकोण के बिना है। कृपया इस सवाल का जवाब मैं एक को दे दिया देखने के समान प्रश्न कारण है कि के लिए:

एकल निर्णय और कार्रवाई बयानों के लिए पसंदीदा शैली क्या है?

हालांकि ब्रेस के उपयोग के लिए दृश्य स्टूडियो डिफ़ॉल्ट एक नई पंक्ति (मेरी पसंदीदा तरीका) पर ब्रेसिज़ डाल करने के लिए है, फ्रेमवर्क डिजाइन दिशानिर्देश पुस्तक (प्रथम संस्करण) क्रिस्टोफ़ क्वालीना और ब्रैड अब्राम द्वारा एक अलग सम्मेलन, उदाहरण के 4 का प्रस्ताव, पर उद्घाटन ब्रेस रखने एक पूर्ववर्ती के अंत ifबयान (पृष्ठ 274)। वे यह भी कहते " से बचें ब्रेसिज़ को छोड़ते हुए, भाषा यह अनुमति देता है, भले ही"।

नहीं होने के दूसरे संस्करण के हाथ में, मैं यह नहीं कह सकता है अगर इन सम्मेलनों बदल गया है या नहीं किया है।

12/03/2009 को 18:46
का स्रोत उपयोगकर्ता

वोट
0

मैं 4 अपने आप को पसंद करते हैं, लेकिन मुझे लगता है 2 भी निश्चित रूप से अच्छा है।

12/03/2009 को 18:43
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more