2009-06-17 15 views
17

जावास्क्रिप्ट का एक पहलू यह है कि जानकारी ढूंढना मुश्किल है, आवरण अभ्यास है। प्रथाओं का आवरण करके, मेरा मतलब है कि किस तत्व (रचनात्मक, निजी कार्य, सार्वजनिक कार्य) के लिए किस आवरण शैली (यानी ऊंट-केस, पास्कल-केस इत्यादि) का उपयोग किया जाना चाहिए।जावास्क्रिप्ट के लिए सबसे अच्छा अभ्यास अभ्यास शैली क्या है? क्यूं कर?

यूयूआई रंगमंच पर डगलस क्रॉकफोर्ड व्याख्यान से मैंने जो एकमात्र नियम सुना है, यह बताते हुए कि रचनाकारों को एकमात्र कार्य होना चाहिए जो अपरकेस अक्षर से शुरू हो।

इसके अलावा वहां कई आवरण मानकों को प्रतीत नहीं होता है जो लोग जावास्क्रिप्ट में अनुसरण करते हैं।

क्या किसी को भी जावास्क्रिप्ट के लिए किसी भी आवरण सर्वोत्तम अभ्यासों को पता है, और क्यों उनका उपयोग करना उचित है?

क्या आप अपनी .js फ़ाइलों के साथ एक आवरण शैली का भी पालन करते हैं?

उत्तर

31

मैं अन्य सभी चीज़ों के लिए रचनाकारों और ऊंट के लिए पास्कलकेस पसंद करता हूं। यही वह शैली है जो जेएस मानक लाइब्रेरी का उपयोग करता है और अच्छी तरह से ... हर जेएस ढांचे को मैंने अब तक देखा है :)

और मैं वेब से सेवा की सभी फाइलों के लिए all_lowercase नामकरण सम्मेलन का उपयोग करता हूं। कुछ केस-असंवेदनशील फ़ाइल सिस्टम हैं।

+3

क्या आप केवल कल्पना कर सकते हैं कि मुख्यधारा के मामले में असंवेदनशील आधुनिक ओएस एक्सडी कितना बेवकूफ होगा! – theonlygusti

1

मैं कन्स्ट्रक्टर को छोड़कर सबकुछ के लिए ऊंटकेस पसंद करता हूं। कारण (और मेरा मानना ​​है कि यही कारण है कि श्री क्रॉकफोर्ड ने भी इसका सुझाव दिया) क्योंकि जावा जैसी अन्य भाषाओं में, सम्मेलन आपके वर्गों को पूंजीकृत करता है, जो कि रचनाकारों के लिए उपयोग किया जाता है।

यह मेरा $ 0.02 है।

14

कोर भाषा रचनाकारों (जैसे ऑब्जेक्ट, दिनांक, संख्या, RegExp) और विधियों और गुणों के लिए ऊंटकेस (उदाहरण के लिए कुछ .toString(), मात्रा.valueOf(), regexp.ignoreCase) के लिए InitialCaps का उपयोग करता है। इस सम्मेलन का पालन डीओएम विनिर्देशों और कार्यान्वयन में भी किया जाता है (उदाहरण के लिए HTMLElement.setAttribute())। तो यह एक ही सम्मेलन को अपनाने के लिए सर्वाधिक महत्व रखता है, या आप की तरह शैलियों की एक खराब घपला साथ खत्म:

var number_of_fish_requested = document.getElementById("fish").value; 
var fish_count = parseInt(number_of_fish_requested, 10); 

जो सिर्फ पूरी तरह से भ्रामक है, न केवल टाइप करने के लिए लेकिन, बहुत अधिक महत्वपूर्ण हो जाता है, पढ़ने के लिए।

(। आप और अधिक समय बिताने कोड को पढ़ने, डिबग करने की कोशिश कर या इसे संशोधित, की तुलना में आप कभी भी पहली जगह में इसे लिखने करते हैं)

+1

महान स्पष्टीकरण के लिए धन्यवाद! –

0
अंडरस्कोर विभाजक के साथ

सभी लोअर केस सबसे आसान को पढ़ने के लिए है, यह प्राकृतिक भाषा का पालन करता है। "बेस्ट" आपको पवित्र युद्ध में लाएगा; हकीकत यह है कि मामले में अन्य डिज़ाइन मुद्दों के मामले में कोई फर्क नहीं पड़ता है लेकिन यह ध्रुवीकरण के लिए एक आसान विषय है।

ALongButNotReallyReadableIdentifier 
an_even_longer_but_completely_readable_identifier 
+2

लेकिन 'सबसे आसान' विशेष रूप से किसी भी पवित्र युद्ध से नहीं बचता है। * मैं * पास्कल और ऊंट का मामला अंडरस्कोर से पढ़ने के लिए * आसान * कहता हूं, जो * आप * कहें 'सबसे आसान' है। अब कौन सही है? – AakashM

+2

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

+0

आपका उदाहरण दिलचस्प है। AnEvenLongerButCompletelyReadableIdentifier ठीक काम करता है, क्योंकि आपके पास शुरुआत में एक-दूसरे के खिलाफ 2 राजधानियां नहीं हैं। –

-1

स्वीकृत उत्तर सत्य है लेकिन कुछ अपवाद हैं। खिड़की में। जेसन और window.XMLHttpRequest शब्द को पूंजीकृत किया गया है।

इसके अलावा अधिकांश लोग जावास्क्रिप्ट और पूंजीकृत मूल्यों में enum प्रकार वस्तुओं के लिए पास्कलकेज़ का उपयोग करते हैं। कभी-कभी पास्कलकेस में नामस्थान भी किए जाते हैं।

उदाहरण: MyCompany.Web.UI.MyComponent.ThemeOption = {BLACK: 0, रजत: 1, नीले: 2}

+0

एक्सएमएल और जेएसओएन abbrev हैं। – HerrSerker

2

मैं क्या देखा है अब तक आवरण मानकों की एक बहुत बड़ी विविधता है।

जहां तक ​​मेरा संबंध है, मैं अपने जावास्क्रिप्ट कोड को लिखने के लिए सी # स्टाइल का उपयोग करता हूं। मैं कक्षाओं का बहुत उपयोग करता हूं (कक्षाओं के रूप में अच्छी तरह से काम करता है, और आमतौर पर स्वतंत्र कार्यों नहीं होते हैं।) तो, मैं क्लास नामों, सार्वजनिक विधियों, गुणों और सभी वैश्विक चर और पागल के लिए पास्कलकेज़ का उपयोग तर्क, स्थानीय चर और निजी कार्यों के लिए करता हूं। यह किसी भी तरह से मेरे सामान्य वातावरण को दर्शाता है, जो परिवर्तनीय क्षेत्रों को अलग करने में मदद करता है। मैं अपने क्लास फ़ंक्शन को एक अलग फ़ाइल में अपने क्लासनाम (ClassName.js, ClassName.min.js) के समान नाम से रखना चाहता हूं।

यह मेरे दृष्टिकोण के बारे में था।

मैंने यह भी देखा कि जावा प्रोग्रामर, जावा नियमों का पालन करें (और लेखन शैली जावा भाषा जैसा दिखता है।) रेल प्रोग्रामर पर रूबी underscore_separated_var_name जैसे अपने नामकरण मानकों का पालन करें।

आगे, जैसा कि आपने बताया है, बहुत लोकप्रिय ढांचे में नामकरण में पास्कलकेस का उपयोग करने की प्रवृत्ति है जिसका लेखक लिनक्स/ओपन सोर्स समुदाय और माइक्रोसॉफ्ट डेवलपर्स (jQuery, knockout.js, JSJaC, आदि) जैसे विभिन्न समुदायों से आते हैं। ।)

मुझे ध्यान रखना चाहिए कि जेएस की बात आने पर इनमें से कोई भी विधि गलत या सही नहीं है। आपके नामकरण सम्मेलनों और फ़ाइल संरचना का प्राथमिक उद्देश्य पठनीयता है। यदि आप लगातार हैं तो आप भविष्य में और आपके साथी डेवलपर्स जल्दी से समझेंगे और आपके कोड के साथ आगे बढ़ेंगे।

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