2016-10-31 6 views
10

मैं जानता हूँ कि कई इस सम्मेलन का सुझाव है कि:जावा में बूलियन क्रियाओं के लिए परिवर्तनीय और विधि नामकरण सम्मेलन?

boolean deleted; 
boolean isDeleted(); 

लेकिन तुम क्या करते हो जब तुम एक बूलियन दर्शाता है कि एक उपयोगकर्ता छोड़ सकते हैं नाम के लिए करना चाहते हैं?

boolean userCanLeave 
boolean isUserCanLeave() 

boolean canUserLeave 
boolean isCanUserLeave() 

boolean userLeave 
boolean isUserLeave() 

boolean userLeave 
boolean canUserLeave() 

मुझे यकीन नहीं है कि इसके लिए कोई मानक है या आप बस ऐसा सोचते हैं जो आपको लगता है कि सबसे अधिक पठनीय है? यह गेटटर विधि नाम मैपिंग के लिए परिवर्तनीय है जो यहां दिलचस्प है।

+0

@TimBiegeleisen नहीं, मुझे लगता है कि यह एक अलग परिदृश्य है। –

+0

नहीं, मुझे नहीं लगता कि यह कम से कम आंशिक रूप से प्रासंगिक है, क्योंकि कुछ जावा-आधारित प्रौद्योगिकियां 'है' और गेटर्स के 'प्राप्त' रूप को पहचानती हैं। –

उत्तर

9

आपको userAllowedToLeave जैसे बेहतर चर नाम का उपयोग करना चाहिए।

और फिर गेटटर विधि का उपयोग isUserAllowedToLeave() के रूप में करें।

यह कम से कम "है" गेटटर का उपयोग करता है, और व्याकरणिक रूप से भी सही लगता है।

+0

एक तरह से मैं आपसे सहमत हूं लेकिन आपको नहीं लगता कि यह बहुत वर्बोज़ हो जाता है? "AllowedTo" और उपसर्ग "वही" एक ही काम करता है। "अनुमोदित" बस इसे अधिक व्याकरणिक रूप से पठनीय बनाता है। –

+0

@ टीएनएचएन - यह वर्बोज़ लग सकता है, लेकिन, अभी भी यह बहुत अधिक पठनीय और समझने में आसान है। "अनुमति" की उपयोगिता केवल नाम को व्याकरणिक रूप से सही बनाने के लिए है। और, आपको ऐसे मामूली मामलों के लिए 'enum' का उपयोग नहीं करना चाहिए; यह केवल समझने और निष्पादित करने के लिए जटिल होने वाले कोड में जोड़ देगा! –

1

कई व्यवस्थाएं अभी भी विधि फलियों पर मूल्यों को निर्धारित करने के लिए कॉल का उपयोग करें, और उन तरीकों एक निश्चित पैटर्न के अनुरूप होना अनिवार्य: भले ही मैं,

isXXX या getXXX

तो मुझे लगता है कि करने के लिए छड़ी करने की कोशिश मैं सेम के उदाहरण बनाने के लिए ढांचे का उपयोग नहीं कर रहा हूं, या यदि वे ढांचे प्रतिबिंब का उपयोग सीधे चर के लिए बाध्य करने के लिए करते हैं। मुझे अभी भी लगता है कि यह अच्छा अभ्यास है।

तो getUserCanLeave()? या isUserLeavable()?

2

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

यह मानते हुए कि अपने की छुट्टी 'अवधारणा एक उपयोगकर्ता एक कार्य पूरा हो या कार्यों के स्थापना की है कि क्या पर आधारित है, तो आप हो सकता है

public enum UserState { inProgress, complete } 

फिर आप इस तरह अपने उपयोगकर्ता वर्ग पर एक विधि leave को लागू कर सकता है :

public void leave() { if (state == UserState.complete) ... } 

जहां state enum ऊपर परिभाषित के एक निजी उदाहरण है। फिर आप सवाल को रेफ्रेम कर सकते हैं, अगर ऐसी चीज की आवश्यकता है, तो GetState के लिए उपयुक्त है। बेशक, आपको complete() विधि की भी आवश्यकता होगी जो राज्य को उचित रूप से बदल देगी और जिसे उपयोगकर्ता ने अपना कार्य पूरा कर लिया होगा।

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