2009-04-23 23 views
5

मैं हाल ही में हमारी आंतरिक जावास्क्रिप्ट पुस्तकालय के लिए एक HasValue समारोह जोड़ लिया है: एक सहकर्मी के साथ एक convorsation दौरानक्या ऐसा कोई फ़ंक्शन नहीं है जो किसी अन्य फ़ंक्शन के विपरीत लौटाए?

function HasValue(item) { 
    return (item !== undefined && item !== null); 
} 

एक, हम भी एक और समारोह है कि मूल रूप से बस उलटा होगा जोड़ने का विचार के साथ आया था: शायद HasNoValue, या IsNothing अगर हम कर कि हम के लिए होता है समाप्त हो गया:

function HasNoValue(item) { 
    return (item === undefined || item === null); 
} 
function HasValue(item) { 
    return !HasNoValue(item); 
} 

हालांकि, हम यकीन नहीं है कि यह दोनों, या HasValue के लिए अधिक पठनीय है नहीं कर रहे हैं। जो अधिक पठनीय/पसंदीदा है?

एक:

if (HasValue(x) && !HasValue(y)) 

बी:

if (HasValue(x) && HasNoValue(y)) 
+1

क्या है! == मुझे पता है क्या! = है। उपयोग कर रहा है! == बराबर === के बराबर है? मैंने पहले कभी नहीं देखा है। –

+1

@ जॉन ईसाक्स हां,! == === के रूप में है!= == – Greg

+0

@ जॉन: http://stackoverflow.com/questions/359494/javascript-vs/359509#359509 पर जानकारी देखें === और! == जावास्क्रिप्ट में। –

उत्तर

20

मैं बेहद बी करने के लिए एक पसंद करते हैं "!" एक प्रोग्रामिंग मुहावरे है जिसे सभी द्वारा समझा जाना चाहिए।

1
बस कोड की और अपने फ़ंक्शन क्योंकि एक बूलियन, मैं तुम्हें पठनीयता के बारे में चिंता है, तो विधि ए के साथ जाने के लिए कहेंगे कम लाइनों होने की खातिर

, आप हमेशा कोशिश कर सकते हैं:

if (HasValue(x) && !(HasValue(y))) 
0

मैं कहूंगा कि विकल्प ए स्पष्ट है, आप जानते हैं कि इसका क्या अर्थ है।

8

मैं तक "ए" मतदान कर रहा हूं।

प्रत्येक और किसी भी बूलियन वापसी समारोह के लिए ऐसा करने का अतिरिक्त रखरखाव बोझ बनाम इसके लायक नहीं है अच्छी तरह से समझा और काफी पठनीय "!", और वास्तव में मेरा मानना ​​है कि "बी" वास्तव में कम पढ़ी जा सकती है, चूंकि नाम के बीच में "नहीं" याद करना इतना आसान है।

0

मैं विकल्प ए के साथ रहूंगा लेकिन यह सिर्फ मुझे है।

12

यदि !HasValue(y) और HasNoValue(y)y की संपूर्ण इनपुट सीमा पर तार्किक रूप से समकक्ष होने की गारंटी है, तो मैं !HasValue(y) को बहुत पसंद करूंगा। क्योंकि अनिवार्य रूप से किसी को !HasNoValue(y) लिखेंगे

मैं करने में संकोच होता भी एक HasNoValue(y) नामित समारोह है।

+1

इस से सहमत है। मुझे इससे नफरत है जब लोग 'जबकि (! IsNotDisabled()) जैसे कोड लिखते हैं ...', क्योंकि यह मुझे नकारात्मकताओं की सभी अस्वीकृति को समझने के लिए बहुत अधिक मानसिक प्रयास करता है। बूलियन लौटने वाले कार्यों में उनके नामों में कोई भिन्नता नहीं होनी चाहिए। –

2

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

विशेष रूप से अब आईडीई के पहले की तुलना में इतना बेहतर इंटेलिजेंस है, मैं आमतौर पर सभी नामकरण के मुकाबले कहीं अधिक वर्बोजिटी चुनता हूं। 10 में से 9 बार, पठनीयता कम प्रदर्शन अंतर, हाथ नीचे trumps।

+0

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

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