जावा बूलियन गेटर्स "बनाम" हैं "


90

मुझे पता है कि बूलियन गेटर्स के लिए जावा में सम्मेलन में उपसर्ग शामिल है "है"।

isEnabled
isStoreOpen

लेकिन क्या होगा यदि विषय बहुवचन है? यही है, अगर एक दुकान खुली है, तो यह जानने के बजाय कि क्या मैं जानना चाहता हूं कि क्या सभी स्टोर खुले हैं?

isStoresOpen() अंग्रेजी में कोई मतलब नहीं है।

मुझे ऐसे लिखने के लिए लुभाया जाता है जैसे:

areStoresOpen
areDogsCute
areCatsFuzzy

और मुझे लगता है कि कोई मतलब होगा, लेकिन मैं दूसरों के द्वारा कहा गया है कि मैं सिर्फ यह चूसना चाहिए और समझौते और उपयोग क्रिया विषय का परित्याग isStoresOpen, isDogsCute, isCatsFuzzy

वैसे भी, बूलियन गेटर्स के लिए मुझे क्या करना चाहिए जो एक बहुवचन विषय पर काम करते हैं?


3
मैं पहले कभी नहीं मिलता are*()
रेकीर

21
are*()अगर वे व्याकरणिक रूप से सही हैं तो मैं हमेशा गेटर्स लिखता हूं ।
फ्रोजन मटर की रोडी

2
यदि आपकी वस्तु सेम है, तो मुझे लगता है कि आपको isया तो has
चिपकना होगा

4
यदि आप उपयोग कर रहे हैं * () पानेवाला तो यह बूलियन वापस करना चाहिए [] ज्यादातर मामलों में, मुझे लगता है।
जुवानिस

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

जवाबों:


57

मुझे याद नहीं है कि यह किस पुस्तक से था, लेकिन सार यह है कि कोड को कई बार पढ़ने के बजाय इसे लिखा जाएगा। पठनीयता के लिए लिखें।


20
क्लीन कोड - रॉबर्ट मार्टिन
जॉन बी

8
लेकिन बहुत सावधान रहें आप बहुत दूर न जाएं। storesAreOpen()संभवतः सबसे व्याकरणिक (क्योंकि if(storesAreOpen())) होगा, लेकिन नाम का बूलियन हिस्सा अब विधि नाम के बीच में छिपा हुआ है, जो जावा सम्मेलनों और पठनीय कोड को तोड़ता है ।
इजाकाता

108
मुझे समझ नहीं आ रहा है कि यह स्वीकृत उत्तर कैसे है। यह प्रश्न का निश्चित उत्तर भी नहीं देता है।
तमजिन ब्लेक

3
वह बहुत सामान्य तरीके से प्रश्न का उत्तर देता है। यह सच है कि वह बारीकियों को संबोधित नहीं करता है, लेकिन यह एक जवाब है। यह दुखद लग सकता है, लेकिन इसका मूल्य है (कम से कम 24 लोग ऐसा सोचते हैं)।
जॉर्ज स्टॉकर

4
उत्तर को स्पष्ट करने के लिए मैं यह टिप्पणी जोड़ूंगा कि areStoresOpen () यहां एक अच्छा विकल्प है।
kiedysktos

94

कैसे पर्याप्त सभ्य अंग्रेजी और निम्नलिखित जावा मानक के बारे में:

isEveryStoreOpen() या isEachCatCute()

जब सही शब्द के संदेह में मैं हमेशा थिसॉरस को हिट करना पसंद करता हूं।


18
+1, यह स्पष्ट रूप से बताता है कि क्या लौटाया गया मान isEveryStoreOpen () या isAnyStoreOpen () अस्पष्ट isStoresOpen () के विपरीत है।
इमर

4
+1 यह स्वीकृत उत्तर होना चाहिए! बनाती है जावा रखने व्याकरण की दृष्टि से, जबकि भावना booleanरों isउपसर्ग सम्मेलन। साथ ही, यह कुछ अतिरिक्त जानकारी प्रदान करता है जो उन गैर-देशी अंग्रेजी बोलने वालों के लिए वास्तव में उपयोगी होगी , जो कोडबेस के अनुरक्षक होते हैं।
हिगुआरो

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

34

कन्वेंशन को गेटेर-मेथड के साथ उपसर्ग करना है "" केवल वैरिएल नहीं है।

जैसे

private boolean enabled;

public boolean isEnabled() {
    return enabled;
}

तथा

private boolean storesOpen;

public boolean isStoresOpen() {
    return storesOpen;
}

isStoresOpen () अंग्रेजी में समझ में नहीं आता है।

यह व्याकरणिक रूप से समझ में नहीं आता है, लेकिन यह सम्मेलन का अनुसरण करता है और पर्याप्त रूप से पठनीय लगता है।


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

@ कोदई: मुझे लगता है कि इसे नियम नहीं, बल्कि सिर्फ एक सम्मेलन माना जाना चाहिए। लेकिन मेरा मानना ​​है कि, कन्वेंशन का पालन नहीं करते हुए कोड लिखना, यदि यह आवश्यक नहीं है, तो कोड को पठनीय बनाने का तरीका है।
भेश गुरुंग

18

जावा बीन विनिर्देश getगेटर्स के लिए उपयोग करने के लिए कहता है जब तक कि यह booleanतब उपयोग न हो isareगैर-मानक है और मानक बीन के नामकरण की अपेक्षा किसी भी चीज से पहचाना नहीं जाएगा।


17

बहुत सारे उपकरण उम्मीद करते हैं isया getपहचान नहीं पाएंगेare

बेहतर अनुकूलता और रूढि़यों के लिए उन्हें getDogsAreFuzzy()या getStoresAreOpen()उस तरह की चीजों को रीफ्रैश करने की कोशिश करें ।


हाँ। सेम उपयोगिताओं जैसे टूल गिनती शब्द पर है बूलियन ही टिककर खेल खोजने के लिए।
nalply

4

- के isEnabled() रूप getEnabled()में भी लिखा जा सकता है Java naming conventions

- नामकरण सम्मेलनों का पालन करने के लिए यह सिर्फ एक अच्छी आदत है, जब आप काम कर रहे हों तो मदद करें Java Beans


3

सामान्य तौर पर मुझे लगता है कि कोड को जितना संभव हो उतना आसानी से पढ़ा जा सकता है ताकि एक विधि को पैराग्राफ के रूप में लगभग पढ़ा जा सके (जैसा कि जासूसी द्वारा Clean Code)। इसलिए, मैं ध्वनि को आसानी से पढ़ने / पढ़ने की विधि का नाम दूंगा और ग्रामर के नियम के साथ जाऊंगा are। आधुनिक आईडीई के साथ विशेष रूप से देखने के बिना तरीकों को खोजना आसान है get/is

हालांकि, कुमार सेम के बारे में एक अच्छी बात करते हैं। बहुत सारे उपकरण केवल get/ की तलाश करेंगे is। उस स्थिति में मैं दोनों तरीकों पर विचार कर सकता हूं। पढ़ने में आसानी के लिए एक और उपकरण के उपयोग के लिए एक।


3

आप किस भाषा में लिख रहे हैं: अंग्रेजी या जावा ?

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

हालाँकि, दूसरी ओर, जब मैं सुबह अखबार पढ़ता हूं, तो मुझे कुछ भी नहीं दिखता है, इसलिए आप अंग्रेजी के अधिक परंपरागत तरीके से लिख सकते हैं।

वापसी 0;


3

अपने प्रश्न में आप स्पष्ट रूप से गेटर्स के बारे में पूछ रहे हैं। एक गेट्टर आपकी कक्षा के एक उदाहरण के बारे में कुछ जानकारी देता है। उदाहरण के लिए आपके पास एक वर्ग है Store। अब, isStoreOpenएक गटर के लिए एक पूरी तरह से ठीक विधि का नाम है।

अगला, आप एक विधि का उल्लेख करते हैं जो यह जांचती है कि सभी स्टोर खुले हैं या नहीं। यह विधि बिल्कुल भी नहीं है, क्योंकि यह एक उदाहरण के बारे में नहीं बल्कि सभी के बारे में जानकारी लौटाती है। जरूर जब तक कोई क्लास हैStores । यदि यह मामला है, तो आपको अपने डिज़ाइन पर पुनर्विचार करना चाहिए, क्योंकि जावा में पहले से ही कई उदाहरणों को संग्रहीत करने के तरीके हैं, जैसे सरणियाँ या संग्रह, इसलिए आपको अतिरिक्त कक्षाएं नहीं लिखनी हैं।

यदि यह मामला नहीं है, तो यह विधि नाम पूरी तरह से ठीक है। एक विकल्प सिर्फ allStoresOpen'है' के बिना हो सकता है।

टीएल; डीआर: यदि आप कई उदाहरणों के साथ काम कर रहे हैं, तो यह एक गटर नहीं है। यदि यह है, तो आपका डिज़ाइन खराब है।


2

काफी ईमानदारी से मैं कहूंगा कि निश्चित रूप से इसके बारे में भूल जाओ are*और साथ रहो is*"is"चर अर्थ के रूप में सोचें और यदि संभव हो तो एक बेहतर नाम बनाएं।

मैं कहूंगा कि isStoresOpen बुरा नहीं लगता है, लेकिन आप isStoresAreOpen बना सकते हैं यदि यह आपके लिए बेहतर लगता है।

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


1

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, यह शायद ही कभी, अगर कभी, के बाद से होने चाहिए Storeया Catया क्या अपने स्वयं के साथ, आप एक अलग वर्ग होना चाहिए isOpen()या isFuzzy()विधि। यदि आपके पास एक उच्च प्रकार है, तो अधिक परमाणु स्तर को विभाजित करने पर विचार करें जो आप वास्तव में उपयोग कर रहे हैं। सामान्य तौर पर, वस्तुओं को निम्नतम स्तर पर बहुवचन नहीं होना चाहिए।


1

isStoresOpen () इस StoreOpen में एक बहुवचन की तरह लगता है,

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

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

यहाँ

भंडार अंग्रेजी व्याकरण के अनुसार बहुवचन है,

IsStoresOpen का बाहर आना बहुवचन नहीं है, इसके बजाय यह विलक्षण है या आप कह सकते हैं कि यह प्रोग्रामिंग सम्मेलन के मामले में अदिश है।

यह सच है या गलत है

आपके अंग्रेजी के बहुवचन कथन के सत्य या गलत होने की तरह नहीं

सही या गलत की कोई सरणी नहीं , या सही या गलत का संग्रह नहीं

तो, यहाँ हम कह सकते हैं कि, हम उस मूल्य से चिंतित हैं जो उस बीन बीन पद्धति से वापस आ गया है, न कि वास्तविक विश्व इकाई को इंगित करने के लिए वर्ग की संपत्ति को दिया गया नाम।

एक और महत्वपूर्ण बात यह है कि जब भी ऐसे बूलियन गुणों का उपयोग कक्षाओं में किया जाता है और जिनका उपयोग किसी भी ढांचे में पूर्वनिर्धारित पुस्तकालयों द्वारा किया जाता है, तो उपयोग उपसर्ग के साथ 'बूलियन मूल्यों को प्राप्त करने के लिए ' होता है,

क्यों इसका मतलब यह नहीं है कि आप की तुलना में आप अंग्रेजी व्याकरण जैसे बहुवचन / एकवचन, मल्टीप्लेक्सर आदि को जानते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.