बूलियन फ़ील्ड के लिए, इसके गेटटर / सेटर के लिए नामकरण सम्मेलन क्या है?


178

उदाहरण के लिए।

boolean isCurrent = false;

आप इसके गेटटर और सेटर का क्या नाम रखते हैं?


2
मुझे लगता है कि आप JavaBeans का उल्लेख कर रहे हैं जिस स्थिति में @ जिगर जोशी का जवाब सही है। हालाँकि यदि आप जेनेरिक गेट्टर / सेटर के बारे में पूछ रहे हैं, तो केवल यह विश्वास है कि विधियों में फ़ील्ड का नाम शामिल है और गेटर कोई तर्क नहीं लेता है और मान लौटाता है, सेटर एक तर्क लेता है और कोई मान नहीं देता है या ऑब्जेक्ट को वापस नहीं करता है। बफ़र को पाने / बसाने वाले दूसरे दृष्टिकोण के उदाहरण के रूप में देखें।
पीटर लॉरी

जवाबों:


255

मान लो तुम्हारे पास है

boolean active;

एक्सेसर्स विधि होगी

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

यह सभी देखें


9
क्या आप सन कोड सम्मेलनों के अनुभाग को इंगित कर सकते हैं जहां बूलियन गेट्टर के नाम विशेष रूप से कवर किए गए हैं? मैं इसे ढूंढ़ नहीं पाया।
कॉन्स्टेंटिन पेलेपेलिन

4
मेरे पास नाम की एक बूलियन हैhasCustomName , अब मुझे इसके गेटटर और सेटर के तरीकों के लिए क्या नाम देना चाहिए ? है setHasCustomName[setter]और hasCustomName[getter]अच्छा है?
हादी

@ हादी सिर्फ अपने वैरिएबल का नाम "customerName" रखें और इसके लिए गेट्टर एन सेटर बनाएं। अपेक्षित public boolean isCustomerName(){return this.customerName;} public void setCustomerName(boolean customerName){this.customerName= customerName;}
गेटटर

1
हम कस्टम नाम से ग्राहक के नाम पर कैसे प्राप्त करेंगे? ;)
कार्तिक चुग

1
@Assegd इसे "customerName" या "customName" नाम देना भ्रामक है और यह बूलियन होने का संकेत नहीं देता है। चर को देखकर मुझे उम्मीद है कि इसमें एक नाम होगा। इस मामले में, इसे "hasCustomName" IMO कहा जाना चाहिए।
नाथन

83

http://geosoft.no/development/javastyle.html#Specific

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

    isSet, isVisible, isFinished, isFound,isOpen

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

बूलियन चर के लिए सेटर विधियों में उपसर्ग निर्धारित होना चाहिए:

void setFound(boolean isFound);

उपसर्ग के कुछ विकल्प हैं जो उपसर्ग है जो कुछ स्थितियों में बेहतर है। ये उपसर्ग हैं, कर सकते हैं और चाहिए:

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

7
तो अगर बूलियन संपत्ति है hasData, तो सेटर कैसा दिखेगा? सबसे निश्चित रूप से, setData(bool hasData)मेरे लिए भयानक रूप से गलत लगता है ...
फ्रांज बी।

7
@FranzB। मैं setHasData (...)
user362178

2
जो लोग देखना चाहते JavaBeans specifcation इस प्रकार के लिए, ऐसा लगता है कि has, can, shouldउपसर्गों विनिर्देश का हिस्सा नहीं हैं। संदर्भ JavaBeans विनिर्देश 1.01 अनुभाग 8.3।
VCD

@ और हाय। जब मैं 'का उपयोग कर रहा हूँ' मेरे चर में उपसर्ग है और डेटा में मेरी js फ़ाइल से उस चर का मान भेज रहा है, तो यह हमेशा मुझे गलत के रूप में मूल्य दे रहा है। और अगर मैं हटाता हूं तो 'उपसर्ग' की तुलना में यह बिल्कुल ठीक काम कर रहा है। उसका क्या कारण हो सकता है? अग्रिम में धन्यवाद।
Me_developer

1
सेटर सीधा है, गेट्टर के लिए मुझे उपयोग करना था boolean isIsCurrent(){...}अन्यथा ऑब्जेक्ट को डिस्क्राइब करने के लिए उपयोग किया जाने वाला ढांचा, के साथ शिकायत कर रहा था getter not found for property isCurrent
मॉरिज़ियो लो बोस्को

67

नाम वाले क्षेत्र के लिए isCurrent, सही गेट्टर / सेटर का नामकरण setCurrent()/ isCurrent()(कम से कम यही ग्रहण सोचता है) है, जो अत्यधिक भ्रामक है और मुख्य समस्या का पता लगाया जा सकता है:

अपने क्षेत्र को isCurrentपहली जगह में नहीं बुलाया जाना चाहिए । क्या कोई क्रिया है और क्रिया किसी वस्तु की स्थिति का प्रतिनिधित्व करने के लिए अनुपयुक्त हैं। इसके बजाय एक विशेषण का उपयोग करें, और अचानक आपके गेटटर / सेटर के नाम अधिक अर्थ लगाएंगे:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}

4
यदि बूलियन एक आदिम नहीं है तो क्या होगा? यदि यह बूलियन है, तो क्या यह एक होना चाहिए या है?
अरुण

2
नहीं, ऐसी विधि शून्य हो सकती है, जो NullPointerException का कारण होगी। लेकिन मैं पहले स्थान पर बूलियन को लौटाने से बचने की कोशिश करूंगा
सीन पैट्रिक फ्लोयड

3
@ मुझे लगता है कि इसे सेट / प्राप्त करना चाहिए बजाय सेट किया गया है / क्योंकि बूलियन आदिम के बजाय एक वस्तु है, क्योंकि इसमें 3 आँकड़े हैं, झूठे, सच्चे या अशक्त।
अल-मोताफ़र

1
IntelliJ getउपसर्ग का उपयोग करने के लिए चूक करता है जब Booleanisboolean
1919 को

1
@ जोकुल और यह सही व्यवहार है, JavaBeans विनिर्देश के अनुसार
सीन पैट्रिक फ्लोयड

6

मेरा मानना है कि यह होगा:

void setCurrent(boolean current)
boolean isCurrent()

1
मुझे वह सम्मेलन पसंद है, लेकिन सम्मेलन वास्तव में मायने नहीं रखते। सबसे महत्वपूर्ण यह है कि आपके द्वारा चुने गए के साथ रहना।
क्लेमेंट हेर्रमैन

4
जब आप इन सम्मेलनों का उपयोग करने वाले उपकरणों पर भरोसा करते हैं तो @ क्लीमेंट कन्वेंशन मायने रखती है । JavaBeans बहुत सारे पुस्तकालयों (JSP / JSF / Spring / Groovy में कुछ को नाम देने के लिए) का व्यापक समर्थन है। सम्मेलनों को तोड़ने का मतलब इन पुस्तकालयों के काम करने के तरीके को तोड़ना है।
सीन पैट्रिक फ्लोयड

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

5

शायद यह जवाब संशोधित करना शुरू करने का समय है? व्यक्तिगत तौर पर मैं के लिए मतदान होगा setActive()और unsetActive()(विकल्प हो सकता है setUnActive(), notActive(), disable(), आदि संदर्भ के आधार पर) के बाद से "setActive" का अर्थ है कि आप इसे हर समय है, जो तुम नहीं पर सक्रिय करें। यह "setActive" कहने के लिए काउंटर की तरह सहज है, लेकिन वास्तव में सक्रिय स्थिति को हटा देता है।

एक और समस्या यह है, आप विशेष रूप से एक CQRS तरीके से एक SetActive घटना नहीं सुन सकते हैं, आपको एक 'setActiveEvent' को सुनने और यह निर्धारित करने की आवश्यकता होगी कि श्रोता वाइटर वास्तव में सक्रिय था या नहीं। या निश्चित रूप से निर्धारित करें कि कौन सी घटना को कॉल करते समय कॉल करना है setActive()लेकिन फिर यह पृथक्करण की चिंता सिद्धांत के खिलाफ जाता है।

इस पर एक अच्छा पढ़ा है फ्लैगअर्टमेंट मार्टिन मार्टिन द्वारा लेख: http://martinfowler.com/bliki/FlagArgument.html

हालांकि, मैं एक PHP बैकग्राउंड से आता हूं और देखता हूं कि यह ट्रेंड ज्यादा से ज्यादा अपनाया जा रहा है। यह सुनिश्चित नहीं है कि यह जावा विकास के साथ कितना रहता है।


-1
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}

3
वर्तमान क्या है? मुझे लगता है कि hasपीओजेओ के लिए कुछ प्रसंस्करण के साथ बीओ या ऐसी सेवा के लिए उपयोग किया जाता है is। और कृपया अपने उत्तर के बारे में कुछ विवरण जोड़ें।
अल-मोताफ़र

-3
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

बूलियन्स के लिए भी आप उपयोग कर सकते हैं

public boolean isCurrent()

11
क्योंकि ओपी बूलियन मूल्यों के बारे में एक प्रश्न बताता है। 'Get' के साथ उपसर्ग करने वाला एक गूलर है (पढ़ें: चाहिए) का उपयोग कभी भी बूलियन मान के लिए नहीं किया जाना चाहिए।
हेरोल्ड

-4

सेटर के रूप में, कैसे के बारे में:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

या

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

मुझे यकीन नहीं है कि अगर ये नामकरण देशी अंग्रेजी बोलने वालों के लिए समझ में आता है।


1
वे वास्तव में
सेन्स

लेकिन ध्वन्यात्मक रूप से शायद कुछ विशेषताओं के साथ होनहार लगता है :)
seba.wagner
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.