नोड.जेएस ऐप्स के लिए कोडिंग स्टाइल गाइड? [बन्द है]


130

वहाँ नोड के लिए एक (या कई) कोडिंग शैली गाइड है। यदि नहीं, तो शीर्ष ओपन-सोर्स नोड परियोजनाओं द्वारा उपयोग की जाने वाली उभरती हुई शैलियाँ क्या हैं ?

मैं PEP 8 , पायथन के लिए कैनोनिकल कोडिंग स्टाइल गाइड की तर्ज पर एक गाइड (या कई गाइड) की तलाश कर रहा हूं । मैंने विभिन्न जावास्क्रिप्ट गाइडों को यहां लिंक करने लायक नहीं देखा है (ज्यादातर क्लाइंट-साइड जावास्क्रिप्ट पर पुराने और लक्षित)। मुझे एक दिलचस्प नोड शैली शैली गाइड मिली ।

एक कोडिंग स्टाइल गाइड, या कोडिंग कन्वेंशन, में शामिल होना चाहिए (लेकिन यह सीमित नहीं है):

  • कोड लेआउट: इंडेंटेशन (2 रिक्त स्थान, 4 रिक्त स्थान, टैब, ...), न्यूलाइन्स, लाइन ब्रेक आदि।
  • व्हॉट्सएप, उदाहरण के लिए, "फ़ंक्शन (arg)" बनाम "फ़ंक्शन (arg)"
  • अर्धविराम या कोई अर्धविराम, var घोषणा, ...
  • नामकरण, जैसे, do_this () बनाम doThis (), var_name बनाम varName, ...
  • नोड.जेएस और जावास्क्रिप्ट मुहावरे, उदाहरण के लिए, == बनाम ===, कॉलबैक का पहला arg एक त्रुटि ऑब्जेक्ट है, ...
  • टिप्पणियाँ और प्रलेखन
  • एक प्रकार का वृक्ष उपकरण, एक प्रकार का वृक्ष चेकर, इकाई परीक्षण रूपरेखा, ...

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


मुझे लगता है कि यह वास्तव में आपके द्वारा उपयोग किए जाने वाले "फ्रेमवर्क" पर निर्भर करता है (यदि कोई हो), उदाहरण के लिए आप spludo.com/source/coding-standards की जांच कर सकते हैं, हालांकि अन्य लोग थोड़े अलग aproaches में प्रवेश कर सकते हैं
Poelinca Dorin

4
"क्या किसी के पास स्टाइल गाइड का एक अच्छा सेट है" व्यक्तिपरक नहीं हो सकता है या नहीं, लेकिन "उभरती हुई शैली क्या हैं" निश्चित रूप से है। आपको फेलिक्स गाइड पहले से ही मिल गया है, जो निश्चित रूप से मैं (कुछ मामलों में दृढ़ता से) के पहलुओं से असहमत हूं और अन्य पहलुओं से सहमत हूं। और यही समस्या है। बहुत, बहुत जल्दी यह "नहीं, जिस शैली को मैं देख रहा हूं वह टैब का उपयोग करती है!" "नहीं, मैं जो शैली देख रहा हूं वह चार स्थानों का उपयोग करता है!" "नहीं, मैं जो शैली देख रहा हूं वह दो स्थानों का उपयोग करता है !" जब, निश्चित रूप से, लोगों को वास्तव में क्या मतलब है "वह शैली जिसे मैं पसंद करता हूं", न कि "वह शैली जो मैं उभर रहा हूं।"
टीजे क्राउडर

2
@ टीटीजे क्राउडर मैं जिस शैली को देख रहा हूं, वह रिक्त स्थान का उपयोग नहीं करती है!
रेयानोस

+1 बहुत बढ़िया सवाल। काश मैं इन लिंक उम्र पहले था।
ब्रायन डाउनिंग

विषय संबंधी प्रश्न।
नील्स एबिल्डगार्ड

जवाबों:


120

मैं JSLint द्वारा जाँच की गई कोडिंग मानकों की समीक्षा करूँगा या NPM (आइजैक श्लिटर के) कोडिंग मानकों के लेखक को देखूँगा ।

आप उल्लेखनीय Node.JS कोडर्स द्वारा उपयोग की जाने वाली शैली को भी देख सकते हैं:

मैं अच्छे उपाय के लिए मुझे वहाँ फेंक दूंगा ;)

संपादित करें: @alienhard से सुझाव

IMO के कुछ सुनहरे नियम हैं जिनका आपको पालन करना चाहिए:

  • कभी उपयोग withयाeval
  • का प्रयोग करें ===अधिक==
  • हमेशा अपने वैरिएबल varको उचित दायरे में घोषित करें - वैश्विक दायरे में न आएं
  • (function(){})()यदि आप सर्वर-साइड के साथ-साथ ब्राउज़र में भी जारी होने वाले कोड को जारी करने की योजना बनाते हैं, तो अपने ऐप को बंद कर दें
  • कॉलबैक को errपहले तर्क के रूप में लिया जाना चाहिए और यदि वे स्वयं एक तर्क के रूप में कॉलबैक लेते हैं, तो यह अंतिम होना चाहिए, जैसेcallback(err, param1, param2, callback)

इंडेंटेशन, ब्रेसिज़ और कीवर्ड्स और सेमीकोलोन प्लेसमेंट के बीच रिक्ति सभी की प्राथमिकता का विषय है।


2
जवाब के लिए धन्यवाद। मैं सोच रहा था कि आपने रयान का उल्लेख क्यों नहीं किया?)। लेकिन मुझे लगा कि आधिकारिक नोड रेपो विकी से, कि वे Google की जावास्क्रिप्ट शैली गाइड का पालन ​​करते हैं । मैं उस एक को पहले नहीं जानता था ...
परछाई

15

शहर में एक नया मानक है।

मानक शैली का उपयोग करें ।

js मानक शैली


1
मुझे नहीं पता कि यह केवल 3 upvotes क्यों है ...
ल्यूक

4
@ शायद "कोई अर्धविराम" नियम के कारण नहीं। कुछ के लिए एक अजीब पसंद की तरह लगता है जिसे "मानक" शैली कहा जाता है।
डैनियल यांकोव्स्की

कोई अर्धविराम एक अच्छा विचार नहीं है। यह कुछ मिनिफिकेशन को तोड़ देगा।
डेवोव

यह standardपैकेज अर्धविराम पसंद नहीं करता है। आप अर्धविराम की तरह वहाँ है, तो semistandard
yesnik

10

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


3
डगलस क्रॉकफोर्ड की पुस्तक "जावास्क्रिप्ट: द गुड पार्ट्स" के लिए +1। यह एक संक्षिप्त / छोटी पुस्तक में बहुत सारी जानकारी का एक नरक है - एक भारी पढ़ा, लेकिन मैंने जो सबसे अच्छी किताबें पढ़ी हैं उनमें से एक।
एलेक्स कीस्मिथ

7

टर्मिनल से नोड का उपयोग करते समय, इंडेंटेशन के लिए रिक्त स्थान का उपयोग करने के लिए आपके स्रोत कोड के लिए यह उपयोगी है। अन्यथा, "यहाँ त्रुटि" कैरेट अप नहीं होगा।

टैब के साथ:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

रिक्त स्थान के साथ:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

यह एक हो सकता है MAC केवल मुद्दा, लेकिन मुझे शक नहीं होगा।


ओपी ने एक स्टाइल गाइड के लिए कहा। कुछ विशिष्ट टिप नहीं।
मय्यम

@ माइटीयम ट्रू, लेकिन इंडेंटेशन रूल्स लगभग हर स्टाइल गाइड का हिस्सा हैं। हो सकता है कि मेरी बात ओपी को कुछ स्टाइल गाइड का मूल्यांकन करने में मदद कर सकती है जो अन्य लोग लिंक करेंगे, या उसे अपनी खुद की स्टाइल गाइड विकसित करने में मदद कर सकते हैं।
डेनियल यांकोव्स्की

6

जब से मैंने यह प्रश्न पूछा है, तब तक यह समय हो चुका है ... और इस बीच मुझे यह उत्कृष्ट जावास्क्रिप्ट गाइड मिला है:

लेखन के सिद्धांत, विचारशील जावास्क्रिप्ट

https://github.com/rwldrn/idiomatic.js/



2

कॉफी-स्क्रिप्ट के लिए, जहां बुरे संकेत का मतलब संकलन त्रुटियों से है

उपयोग

:set tabstop=2
:set shiftwidth=2
:set expandtab

लोकप्रिय कॉफी परियोजनाओं, zombie, brunchindentations के लिए इस स्थापना का उपयोग करता है।

संपादित करें:

असल में, बस इस का उपयोग करें! https://github.com/paulmillr/code-style-guides (मुख्य योगदानकर्ताओं में से एक brunch)

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