2010-11-26 12 views
13

Java कोड style में कौन सा बेहतर है?बूलियन चेकिंग अगर()

boolean status = true; 
if(!status) { 
    //do sth 
} else { 
    //do sth 
} 

या

if(status == false) { 
    //do sth 
} else { 
    //do sth 
} 
+0

'स्विच (स्थिति) {मामले सच: {...; टूटना; } चूक: { ...; टूटना; }} ':) – tchrist

+0

@ क्रिसमस: ... और आपका मुद्दा है? – missingfaktor

+0

स्विच (बूलियन) गलत है, बूलियन – ashishdhiman2007

उत्तर

17

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

एक और सुझाव: अपने boolean चर के लिए एक अलग नाम चुनें। this Java style guide के अनुसार:

है उपसर्ग बूलियन चर और तरीकों के लिए इस्तेमाल किया जाना चाहिए।

isSet, isVisible, isFinished, isFound, isOpen

यह boolean तरीकों और चर जावा कोर पैकेज के लिए सूर्य से इस्तेमाल किया के लिए नामकरण परंपरा है।

is उपसर्ग का उपयोग करते हुए एक आम status या flag तरह ख़राब बूलियन नाम चुनने की समस्या का हल। isStatus या isFlag बस फिट नहीं है, और प्रोग्रामर को सार्थक नाम चुनने के लिए मजबूर होना पड़ता है।

boolean चर के लिए

सेटर तरीकों में के रूप में उपसर्ग सेट अप करना होगा:

void setFound(boolean isFound);

is उपसर्ग है कि कुछ स्थितियों में अच्छी तरह फिट करने के लिए कुछ विकल्प हैं। ये हैं has, can और should उपसर्ग:

boolean hasLicense(); 
boolean canEvaluate(); 
boolean shouldAbort = false; 
+0

'good_status' या' fair_weather_status' या 'status_known'' या 'status_unknown' या यहां तक ​​कि 'status_malus__vana_salus__semper_dissolubilis' आज़माएं। :) – tchrist

4

पूर्व। उत्तरार्द्ध केवल शब्दशः जोड़ता है।

0

यह भी अधिक पठनीय और अच्छी प्रथा है।

if(!status){ 
//do sth 
}else{ 
//do sth 
} 
+0

स्विच में नहीं हो सकता है, सिवाय इसके कि मैं उन क्लॉज को फ़्लिप कर दूंगा जो आप परीक्षण करते हैं (स्थिति) –

+0

इसके अलावा, आप वैरिएबल नाम को "is-" उपसर्ग के साथ संशोधित कर सकते हैं ताकि यह निर्धारित किया जा सके कि डिफ़ॉल्ट मान क्या है है। –

6

पहले एक, या if (status) { /*second clause*/ } else { /* first clause */ }

संपादित

तो दूसरा रूप वास्तव में वांछित है, तो if (false == status) <etc>, भद्दा, जबकि, शायद सुरक्षित (wrt लिखने की त्रुटियों) है।

+0

+1 (झूठी == स्थिति) के लिए +1, जो 'if (0 == i)' प्रश्न के लिए मार्गदर्शन भी नहीं देता है, – subsub

22

मैं सुझाव है कि आप कार्य करें:

if (status) { 
    //positive work 
} else { 
    // negative work 
} 

== परीक्षण, जबकि जाहिर बेमानी है, यह भी एक भी = टाइपो जो एक काम में परिणाम होगा के जोखिम को चलाते हैं।

+2

+1 को गलती से टाइपिंग के खतरे को इंगित करने के लिए नहीं पूछा गया है "=" – RAY

+1

+1 सकारात्मक और नकारात्मक तर्क की जगह का आदान-प्रदान। – Mudassir

3

पहला वाला। लेकिन एक अन्य बिंदु बस, निम्नलिखित भी अपने कोड अधिक पठनीय होगा:

if (!status) { 
    // do false logic 
} else { 
    // do true logic 
} 

नोट if और ( के बीच अतिरिक्त स्पेस देखते हैं कि, और यह भी else बयान से पहले।

संपादित

, @Mudassir द्वारा बताया गया है, अगर वहाँ नहीं विधि में अन्य साझा कोड तर्क का प्रयोग करें, तो बेहतर शैली होगा:

if (!status) { 
    // do false logic 
} 

// do true logic 
+0

@Downvoter - टिप्पणी करने की देखभाल? –

+0

हाँ, मैंने आपका जवाब घटा दिया। लेकिन यह व्यक्तिगत नहीं है। – Mudassir

+1

@ मुदासिर * श्वास * ... –

8

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

पर्ल से दूर जाने के कारणों में से एक कारण यह है कि यह विराम चिह्न पर इतनी भारी निर्भर करता है, जो पढ़ने के दौरान व्याख्या करने के लिए बहुत धीमी है।

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

+0

चतुरता पर स्पष्टता चुनने के लिए +1 – RAY

+0

अच्छा। मुझसे +1 – Mudassir

+0

'स्थिति' के साथ एक भयानक नाम होने के साथ सहमत हैं, लेकिन '! एस' सी-व्युत्पन्न भाषाओं में झूठी-हुड के परीक्षण के लिए बेवकूफ है। – lijie

1

पहली शैली बेहतर है। हालांकि आप बेहतर चर नाम

3

का उपयोग करना चाहिए यह वास्तव में भी कैसे आप अपने चर नाम पर निर्भर करता है।

जब लोग पूछ रहे हैं "कौन सा बेहतर अभ्यास है" - यह स्पष्ट रूप से तात्पर्य है कि दोनों सही हैं, इसलिए यह केवल एक बात है जिसे पढ़ने और बनाए रखना आसान है।

आप अपने चर "स्थिति" (जो आपके उदाहरण कोड में मामला है) का नाम है, मैं बहुत

if(status == false) // if status is false

देखने के लिए दूसरी ओर, पसंद करेंगे अगर आप अपने चर isXXX नाम दिया था (जैसे isReadableCode), तो पूर्व अधिक पठनीय है। पर विचार करें:

if(!isReadable) { // if not readable 
    System.out.println("I'm having a headache reading your code"); 
} 
2

मेरा व्यक्तिगत भावना जब यह

if(!status) : if not status 

if(status == false) : if status is false 

पढ़ने अगर आप स्थिति पढ़ने के आदी नहीं हैं करने के लिए आता है!। मुझे दूसरी तरफ से कोई नुकसान नहीं दिख रहा है।

अगर आप स्थिति मैं बात करने के बजाय "सक्रिय" का उपयोग करते हैं (! सक्रिय) अधिक पठनीय

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