क्या मुझे JSLint या JSHint जावास्क्रिप्ट सत्यापन का उपयोग करना चाहिए? [बन्द है]


454

मैं वर्तमान में JSLint के खिलाफ अपने जावास्क्रिप्ट को सत्यापित कर रहा हूं और प्रगति कर रहा हूं, यह मुझे बेहतर जावास्क्रिप्ट लिखने में सहायता कर रहा है - विशेष रूप से जेकरी लाइब्रेरी के साथ काम करने में।

मैं अब JSLint का एक कांटा JSHint भर में आया हूं । इसलिए मैं वेब अनुप्रयोगों के लिए सोच रहा हूं, जो बहुत अधिक जावास्क्रिप्ट संचालित किए गए हैं, जो इसके खिलाफ काम करने के लिए बेहतर या सबसे अधिक मान्य सत्यापन उपकरण है:

  • JSLint या JSHint?

मैं एक सत्यापन तंत्र पर अब निर्णय करना चाहता हूं और आगे बढ़ना है, इसका उपयोग क्लाइंट साइड सत्यापन के लिए करता हूं।

और jshint और jslint के बीच अंतर? कृपया एकल जावास्क्रिप्ट उदाहरण में स्पष्ट करें।

लिंक:

  1. jshint - http://www.jshint.com/

  2. jslint - http://jslint.com/


4
ESLint के बारे में कैसे ? यद्यपि यह अपूर्ण है: Combine this with the previous 'var' statement-> Do not mix 'require' and other declarations, विरोधाभास।
nyuszika7h 22



जेएस डेवलपर नहीं। लेकिन मुझे हमारी कोड समीक्षा प्रक्रिया के दौरान JSHint बहुत उपयोगी लगा। मेरा यही सुझाव है।
चेतन वशिष्ठ

जवाबों:


156

[संपादित करें]
यह उत्तर संपादित किया गया है। मैं संदर्भ के लिए मूल उत्तर नीचे छोड़ रहा हूं (अन्यथा टिप्पणियां समझ में नहीं आएंगी)।

जब यह प्रश्न मूल रूप से पूछा गया था, तो JSLint जावास्क्रिप्ट के लिए मुख्य लाइनिंग उपकरण था। JSHint JSLint का एक नया कांटा था, लेकिन अभी तक मूल से बहुत अधिक विचलन नहीं हुआ था।

तब से, JSLint बहुत अधिक स्थिर बना हुआ है, जबकि JSHint ने एक महान सौदा बदल दिया है - इसने JSLint के कई अधिक विरोधी नियमों को दूर कर दिया है, नए नियमों का एक पूरा भार जोड़ दिया है, और आम तौर पर अधिक लचीला हो गया है। इसके अलावा, एक और उपकरण ESLint अब उपलब्ध है, जो और भी अधिक लचीला है और इसमें अधिक नियम विकल्प हैं।

अपने मूल उत्तर में, मैंने कहा कि आपको अपने आप को JSLint के नियमों से चिपके रहने के लिए मजबूर नहीं करना चाहिए; जब तक आप समझते हैं कि यह चेतावनी क्यों फेंक रहा था, तो आप अपने बारे में निर्णय ले सकते हैं कि चेतावनी को हल करने के लिए कोड को बदलना है या नहीं।

2011 से JSLint के अल्ट्रा-सख्त नियम के साथ, यह उचित सलाह थी - मैंने बहुत कम जावास्क्रिप्ट कोडसेट देखे हैं जो JSLint परीक्षण पास कर सकते हैं। हालाँकि आज के JSHint और ESLint टूल में उपलब्ध अधिक व्यावहारिक नियमों के साथ, यह आपके कोड को शून्य चेतावनियों से गुजरने की कोशिश करने के लिए अधिक यथार्थवादी प्रस्ताव है।

अभी भी कभी-कभार ऐसे मामले हो सकते हैं जहाँ कोई लिंटर किसी ऐसी चीज़ के बारे में शिकायत करेगा, जो आपने जानबूझकर की है - उदाहरण के लिए, आप जानते हैं कि आपको हमेशा उपयोग करना चाहिए, ===लेकिन सिर्फ एक बार आपके पास उपयोग करने का एक अच्छा कारण है ==। लेकिन फिर भी, ESLint के साथ आपके पास eslint-disableप्रश्न में लाइन के चारों ओर निर्दिष्ट करने का विकल्प होता है ताकि आप अभी भी शून्य चेतावनी के साथ पासिंग लिंट टेस्ट कर सकें, आपके बाकी कोड नियम का पालन करते हुए। (बस उस तरह की बात अक्सर मत करो!)


[मूल ANSWER FOLLOWS]

हर तरह से JSLint का उपयोग करें। लेकिन परिणामों पर लटका नहीं है और इसके बारे में चेतावनी देने वाली हर चीज को ठीक करने पर। यह आपको अपना कोड सुधारने में मदद करेगा, और यह आपको संभावित बग ढूंढने में मदद करेगा, लेकिन सब कुछ नहीं जो जेएसएलआईएनटी को एक वास्तविक समस्या के रूप में पता चलता है, इसलिए ऐसा महसूस न करें कि आपको शून्य चेतावनी के साथ प्रक्रिया को पूरा करना है।

किसी भी महत्वपूर्ण लंबाई या जटिलता के साथ बहुत अधिक जावास्क्रिप्ट कोड JSLint में चेतावनी का उत्पादन करेगा, चाहे कितना भी अच्छा लिखा हो। यदि आप मुझ पर विश्वास नहीं करते हैं, तो इसके माध्यम से JQuery जैसे कुछ लोकप्रिय पुस्तकालयों को चलाने का प्रयास करें।

कुछ JSLint चेतावनियाँ दूसरों की तुलना में अधिक मूल्यवान हैं: जानें कि किन लोगों को देखना है, और कौन से कम महत्वपूर्ण हैं। हर चेतावनी पर विचार किया जाना चाहिए, लेकिन किसी भी चेतावनी को स्पष्ट करने के लिए अपने कोड को ठीक करने के लिए बाध्य महसूस न करें; कोड देखना और तय करना कि आप इससे खुश हैं, यह पूरी तरह से ठीक है; कई बार ऐसी चीजें होती हैं जो जेस्लिंट को पसंद नहीं होती हैं, वास्तव में ऐसा करना सही है।


3
JsHint का सबसे अच्छा हिस्सा यह है कि इसमें jQuery स्वीकार करने के लिए झंडे हैं और यह jslint के रूप में कष्टप्रद / सख्त नहीं है। जैसे: जहां यह ठीक है for (i = 0; i < dontEnumsLength; i++)फेंकता है Unexpected '++'। आदि
राफेलडीडीएल

2
कृपया, नियमों की अनदेखी न करें, यह सबसे खराब चीज है जिसे आप लिंटर के साथ कर सकते हैं। बस इसे सेटअप करें, या यदि आप इसे नहीं कर सकते, तो बदल दें। JSHint और JSCS संयोजन शानदार है
AuthorProxy

JSHint कहते हैं, "एक असाइनमेंट या फ़ंक्शन कॉल की अपेक्षा की गई और इसके बजाय एक अभिव्यक्ति देखी गई।" केवल ऑपरेशन के लिए उपयोग किए जाने वाले टर्नरी के लिए। मोज़िला प्रलेखन: कहते हैं, "आप विभिन्न कार्यों को करने के लिए खाली स्थान में टर्नरी मूल्यांकन का भी उपयोग कर सकते हैं"। developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… @AuthorProxy मैं मोज़िला के लिए जा रहा हूँ और JSHint को अनदेखा कर रहा हूँ। माफ़ करना।
दादू

1
अब तक ऐसा लग रहा है कि ईएसएलआईएनटी वह दिशा है, जिसमें उद्योग समग्र रूप से अग्रणी है, साथ ही एयरबीएनबी जैसे लोकप्रिय विन्यास भी।
jinglesthula

369

टीएल; ड्रिक टेकवे :

यदि आप स्वयं या टीम, JSLint के लिए बहुत उच्च स्तर की तलाश कर रहे हैं। लेकिन यह जरूरी नहीं है कि मानक, सिर्फ एक मानक, जिनमें से कुछ डॉग स्टॉर्कफोर्ड नामक एक जावास्क्रिप्ट भगवान से हमारे पास आता है। यदि आप थोड़ा अधिक लचीला होना चाहते हैं, या आपकी टीम पर कुछ पुराने मुकदमे हैं, जो JSLint की राय में नहीं खरीदते हैं, या एक नियमित आधार पर JS और अन्य C- पारिवारिक भाषाओं के बीच आगे और पीछे जा रहे हैं, तो JSHint आज़माएं।

लंबा संस्करण :

कांटे के पीछे तर्क बहुत अच्छी तरह से बताता है कि जेएसहिंट क्यों मौजूद है:

http://badassjs.com/post/3364925033/jshint-an-community-driven-fork-of-jslint http://anton.kovalyov.net/2011/02/20/why-i-funed-jslint-to -jshint /

इसलिए मुझे लगता है कि यह विचार है कि यह क्रॉकफोर्ड-चालित के बजाय "समुदाय-संचालित" है। व्यावहारिकता में, JSHint आम तौर पर कुछ शैलीगत और मामूली वाक्यविन्यास "राय" पर थोड़ा अधिक (या कम से कम विन्यास या अज्ञेयवादी) है कि JSLint पर एक स्टिकर है।

एक उदाहरण के रूप में, यदि आपको लगता है कि नीचे A और B दोनों ठीक हैं, या यदि आप A के एक या अधिक पहलुओं के साथ कोड लिखना चाहते हैं जो B में उपलब्ध नहीं हैं, तो JSHint आपके लिए है। अगर आपको लगता है कि B एकमात्र सही विकल्प है ... JSLint। मुझे यकीन है कि अन्य अंतर हैं, लेकिन यह कुछ पर प्रकाश डालता है।

A) JSHint को बॉक्स से बाहर निकालता है - JSLint को विफल करता है

(function() {
  "use strict";
  var x=0, y=2;
  function add(val1, val2){
    return val1 + val2;
  }
  var z;
  for (var i=0; i<2; i++){
    z = add(y, x+i);
  }
})();

B) JSHint और JSLint दोनों को पास करता है

(function () {
    "use strict";
    var x = 0, y = 2, i, z;
    function add(val1, val2) {
       return val1 + val2;
    }
    for (i = 0; i < 2; i += 1) {
        z = add(y, x + i);
    }
}());

व्यक्तिगत रूप से मुझे JSLint कोड देखने में बहुत अच्छा लगता है, और इसके बारे में एकमात्र कठिन विशेषताएं जो मुझे असहमत हैं , एक फ़ंक्शन में और एक से अधिक लूप var i = 0घोषणाओं के लिए इसकी घृणा है , और फ़ंक्शन घोषणाओं के लिए कुछ व्हॉट्सएप प्रवर्तन ।

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

बहुत सारे अच्छे पुस्तकालय लाइंटेबल नहीं होते हैं, जो मेरे लिए प्रदर्शित करता है कि इस विचार में कुछ सच्चाई है कि जेएसएलआईएनटी के कुछ बस "अच्छे कोड" के 1 संस्करण (जो वास्तव में, अच्छा कोड है) को आगे बढ़ाने के बारे में है। लेकिन फिर, एक ही पुस्तकालय (या अन्य अच्छे) शायद या तो संकेत नहीं कर रहे हैं, इसलिए, छू।


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

67
@LeeKowalkowski JSLint को हतोत्साहित करने for (var i = 0; ...; i++)का कारण यह है कि यह लूप को स्वयं में समाहित नहीं करता है । कार्य का दायरा iहै। वाक्य-विन्यास ऐसा लगता है कि यह एक ब्लॉक स्कोप बना रहा है, लेकिन ऐसा नहीं है और यह कम अनुभवी जावास्क्रिप्ट प्रोग्रामर और कई भाषाओं में लिखने वाले लोगों को एक वेरिएबल के दायरे को गलत समझने के लिए प्रेरित करता है और इसके परिणामस्वरूप सूक्ष्म कीड़े हो सकते हैं। हम में से कई (स्वयं शामिल) यह पसंद नहीं कर सकते हैं कि सभी घोषणाओं को ऊपर रखना कैसा लगता है, लेकिन यह एक अच्छा अनुस्मारक है कि जावास्क्रिप्ट में ब्लॉक गुंजाइश नहीं है।
मार्क इवांस

25
@MarkEvans यह स्वयं इस दृष्टिकोण से निहित है कि यदि आप सिर्फ लूप को किसी अन्य फ़ंक्शन में स्थानांतरित करते हैं, iतो गलती से वैश्विक नहीं होगा। यह तथ्य कि iफंक्शन स्कॉप्ड है ब्लॉक स्कॉप्ड नहीं है, यह एक अच्छा पर्याप्त कारण नहीं है कि टॉप पर वैरिएबल्स घोषित किया जाए, वेरिएबल्स को हमेशा जहां संभव हो उतना पास घोषित किया जाना चाहिए ( प्रोग्रामर.स्टैकएक्सचेंज . com/questions/56585/… )।
ली कोवलकोव्स्की

17
@MarkEvans मुझे लगता है कि आप भाषा कार्यान्वयन विवरण पर बहुत अधिक ध्यान केंद्रित कर रहे हैं। प्रोग्रामिंग मानक मनुष्यों के लिए होना चाहिए, न कि संकलक। आम बाधाओं को पकड़ने के लिए एक स्थिर कोड विश्लेषण उपकरण पर रिलायंस अच्छी आदतों को अपनाने के लिए कोई प्रतिस्थापन नहीं है जो उन्हें पहली जगह से बचाते हैं। मैं इस कारण से थाह नहीं लगा सकता कि साधारण लूप के लिए एक इटरेटर चर को लूप से किसी भी दूरी पर घोषित किया जाना चाहिए, जिसकी आवश्यकता है। अन्य भाषाओं के लिए कई कोडिंग मानकों का कहना है कि चर को जहां तक ​​संभव हो, पठनीयता के लिए उपयोग किया जाता है। मैंने जेएस में ऐसा नहीं करने का एक अच्छा कारण नहीं देखा है।
ली कोवलकोव्स्की

11
लूप के बाहर एक इटरेटर वैरिएबल का उपयोग करना एक ऐसी चीज है जिसे लिंटर को जांचना चाहिए।
ली कोवलकोव्स्की

61

जावास्क्रिप्ट लाइनिंग मोर्चे पर एक और परिपक्व और सक्रिय रूप से विकसित "खिलाड़ी" है ESLint: -

ESLint ECMAScript / JavaScript कोड में पाए जाने वाले पैटर्न की पहचान और रिपोर्टिंग के लिए एक उपकरण है। कई मायनों में, यह कुछ अपवादों के साथ JSLint और JSHint के समान है:

  • ESLint जावास्क्रिप्ट पार्सिंग के लिए एस्प्रिमा का उपयोग करता है।
  • ESLint कोड में पैटर्न का मूल्यांकन करने के लिए एक एएसटी का उपयोग करता है।
  • ESLint पूरी तरह से प्लग करने योग्य है, हर एक नियम एक प्लगइन है और आप रनटाइम पर अधिक जोड़ सकते हैं।

यहाँ वास्तव में क्या मायने रखता है कि यह कस्टम प्लगइन्स / नियमों के माध्यम से विस्तार योग्य है । विभिन्न प्रयोजनों के लिए पहले से ही कई प्लगइन्स लिखे गए हैं। दूसरों के बीच में हैं:

और, निश्चित रूप से, आप अपनी पसंद के बिल्ड टूल को चलाने के लिए उपयोग कर सकते हैं ESLint:


1
आपके संपादक में आपके द्वारा टाइप किए गए लिंटर के मूल्य को नहीं समझा जा सकता है। ESLint का उपयोग बड़े पैमाने पर किया जाता है। मैंने कभी JSLint या JSHint संपादक समर्थन (1 वास्तविक डेटा बिंदु) के बारे में नहीं सुना है।
jinglesthula

17

मैं कुछ हफ्ते पहले एक ही सवाल था और JSLint और JSHint दोनों का मूल्यांकन कर रहा था।

इस प्रश्न के उत्तर के विपरीत, मेरा निष्कर्ष यह नहीं था:

हर तरह से JSLint का उपयोग करें।

या:

यदि आप स्वयं या टीम, JSLint के लिए बहुत उच्च स्तर की तलाश कर रहे हैं।

जैसा कि आप लगभग कॉन्फ़िगर कर सकते हैं JSHint में उसी नियमों JSLint में। इसलिए मेरा तर्क है कि आपके द्वारा प्राप्त किए जा सकने वाले नियमों में बहुत अंतर नहीं है।

इसलिए तकनीकी के मुकाबले दूसरे को चुनने का कारण राजनीतिक है।

हमने अंततः निम्नलिखित कारणों के कारण JSHint के साथ जाने का फैसला किया है:

  • लगता है कि अधिक JSLint विन्यास हो सकता है।
  • वन-मैन-शो के बजाय निश्चित रूप से अधिक समुदाय-संचालित दिखता है (कोई फर्क नहीं पड़ता कि आदमी कितना शांत है)।
  • JSHint ने हमारी कोड शैली OOTB का बेहतर तरीके से मिलान किया जो JSLint है।

1
संक्षिप्त और संक्षिप्त उत्तर के लिए धन्यवाद। इस मुद्दे के बारे में मेरे रिक्त हल।
एकुप्पी

13

मैं एक तीसरा सुझाव दूंगा , गूगल क्लोजर कंपाइलर (और क्लोजर लाइनर भी )। आप इसे यहाँ ऑनलाइन आज़मा सकते हैं

क्लोजर कंपाइलर जावास्क्रिप्ट डाउनलोड और तेजी से चलाने के लिए एक उपकरण है। यह जावास्क्रिप्ट के लिए एक सच्चा संकलक है। एक स्रोत भाषा से मशीन कोड के संकलन के बजाय, यह जावास्क्रिप्ट से बेहतर जावास्क्रिप्ट को संकलित करता है। यह आपके जावास्क्रिप्ट को पार्स करता है, इसका विश्लेषण करता है, मृत कोड निकालता है और फिर से लिखता है और जो बचा है उसे कम करता है। यह सिंटैक्स, चर संदर्भ और प्रकारों की भी जांच करता है, और सामान्य जावास्क्रिप्ट नुकसान के बारे में चेतावनी देता है।


4
क्लोजर कम्पाइलर क्या उठाता है कि लिंटर नहीं करता है?
जेम्स मैकमोहन

4
मैं इस उपकरण द्वारा उत्पन्न एक भी चेतावनी नहीं देखता, जब यह निश्चित रूप से होना चाहिए। JSLint और JSHint एक ही इनपुट के लिए इतनी चेतावनी देते हैं, कि वे दोनों "बहुत अधिक त्रुटियां" देते हैं।
wallyk

6
हमने हाल ही में एक प्रोजेक्ट पर क्लोजर का इस्तेमाल किया और इसे दोबारा नहीं करेंगे। लिंटर को कुछ चेक के टर्न के लिए कॉन्फ़िगर नहीं किया जा सकता है (जिनमें से कई ऐसी चीजें हैं जिनकी आप परवाह नहीं करेंगे) और कंपाइलर वास्तव में केवल तभी भुगतान करता है यदि आप विशेष रूप से क्लोजर-फ्रेंडली लाइब्रेरी के साथ काम कर रहे हैं (जिनमें से वास्तव में नहीं हैं google के बाहर कोई भी)।
रॉबर्ट लेवी

4
यह गूगल क्लोजिंग कॉम्पीलर प्रति सेगमेंट की बात नहीं कर रहा है, लेकिन Google के टूल को हमेशा नमक के दाने के साथ देखा जाना चाहिए। वे Google के विशेष लक्ष्यों को हल करने के लिए बनाए गए हैं, और वे आपके लक्ष्यों से मेल नहीं खा सकते हैं।
पचेरियर

@RobertLevy आपके अनुभव पर टिप्पणी करने के लिए धन्यवाद ... मैं जावास्क्रिप्ट के लिए Google शैली गाइड पढ़ रहा था और इसे बंद करने-संकलक की सिफारिश की है क्योंकि यह एक प्रकार का वृक्ष कार्यक्रम है। लेकिन अब मैं देख रहा हूँ कि jslint और jshint जैसे अन्य लोग हैं
ट्रेवर बोयड स्मिथ

13

प्राक्कथन: ठीक है, कि जल्दी से बढ़ा। लेकिन के माध्यम से इसे खींचने का फैसला किया। यह उत्तर आपके और अन्य पाठकों के लिए उपयोगी हो सकता है।

मैं थोड़ा इधर उधर हो गया

कोड संकेत

हालांकि JSLint और JSHint उपयोग करने के लिए अच्छे उपकरण हैं, वर्षों से मैं अपने दोस्त @ugly_syntax कॉल की सराहना करने के लिए आया हूं :

छोटे डिजाइन स्थान

यह एक सामान्य सिद्धांत है, बहुत कुछ "ज़ेन भिक्षु" की तरह, जो विकल्प चुनना पड़ता है, उसे सीमित करके व्यक्ति अधिक उत्पादक और रचनात्मक हो सकता है।

इसलिए मेरी वर्तमान पसंदीदा शून्य-विन्यास जेएस कोड शैली:

StandardJS

अपडेट करें :

बहे में बहुत सुधार हुआ है। इसके साथ, आप अपने जेएस में प्रकार जोड़ सकते हैं इससे आपको बहुत सारे कीड़े को रोकने में मदद मिलेगी। लेकिन यह आपके रास्ते से बाहर भी रह सकता है, उदाहरण के लिए जब अनकैप्ड जेएस को इंटरसेप्ट करता है। कोशिश करो!

क्विकस्टार्ट / टीएल; डीआर

standardआप परियोजना के लिए एक निर्भरता के रूप में जोड़ें

npm install --save standard

फिर package.json, निम्नलिखित परीक्षण स्क्रिप्ट जोड़ें:

"scripts": {
    "test": "node_modules/.bin/standard && echo put further tests here"
},

विकसित करते समय स्नेज़ियर आउटपुट के लिए, npm install --global snazzyऔर इसके बजाय इसे चलाएंnpm test

नोट: प्रकार जाँच बनाम आंकड़े

मेरे दोस्त ने डिजाइन स्पेस का उल्लेख करते हुए एल्म को संदर्भित किया और मैं आपको उस भाषा को आजमाने के लिए प्रोत्साहित करता हूं।

क्यों? JS वास्तव में LISP से प्रेरित है, जो कि भाषाओं का एक विशेष वर्ग है, जो अनकैप्ड होता है । एल्म या पर्सस्क्रिप्ट जैसी भाषा टाइप की गई कार्यात्मक प्रोग्रामिंग भाषाएं हैं।

कंपाइलर के लिए अपनी स्वतंत्रता को सीमित करें ताकि आप भाषा या अपने स्वयं के कार्यक्रम के नियमों का उल्लंघन करने पर जांच और मार्गदर्शन कर सकें; अपने कार्यक्रम के आकार (LOC) की परवाह किए बिना।

हमने हाल ही में एक जूनियर सहयोगी को दो बार एक प्रतिक्रियाशील इंटरफ़ेस लागू किया था: एल्म में एक बार, रिएक्ट में एक बार; मैं किस बारे में बात कर रहा हूं, इसका कुछ अंदाजा लगाने के लिए एक नज़र।

तुलना करें Main.elm(टाइप) ⇔ index.js(अप्रकाशित, कोई परीक्षण नहीं)

(पीएस। ध्यान दें कि रिएक्ट कोड मुहावरेदार नहीं है और इसमें सुधार किया जा सकता है)

एक अंतिम टिप्पणी,

वास्तविकता यह है कि जे एस है है untyped। मैं आपको टाइपिंग प्रोग्रामिंग का सुझाव देने वाला कौन हूं ?

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

लेकिन बिना प्रकार के हमारे कार्यक्रमों को ध्यान में रखने के लिए बहुत कम है, इसलिए हमें परीक्षण शुरू करने और (कुछ हद तक) कोड शैलियों के लिए मजबूर किया जाता है।

मैं आपको प्रेरणा के लिए LISP (उदाहरण के लिए क्लोजुरस्क्रिप्ट ) देखने की सलाह देता हूं और अपने कोड के परीक्षण में निवेश करता हूं । पढ़ें सबटैक का तरीकाएक विचार प्राप्त करने के लिए ।

शांति।


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

1
डाउनवोट्स से असंबंधित, लेकिन आपके Main.elm और index.js लिंक दोनों 404s हैं
cs01

1
सवाल स्पष्ट रूप से jslint या jshint था, विकल्प के लिए नहीं पूछ रहा था।
jzacharuk

1
जिफ एक उत्थान के योग्य है।
sr9yar

8

खैर, मैनुअल लिंट सेटिंग्स करने के बजाय, हम अपने जेएस फ़ाइल के शीर्ष पर सभी लिंट सेटिंग्स शामिल कर सकते हैं

उस फ़ाइल में सभी वैश्विक संस्करण की घोषणा करें जैसे:

/*global require,dojo,dojoConfig,alert */

सभी लिंट सेटिंग्स जैसे:

/*jslint browser:true,sloppy:true,nomen:true,unparam:true,plusplus:true,indent:4 */

आशा है कि यह आपकी मदद करेगा :)


1

एक अन्य सक्रिय रूप से विकसित विकल्प भी है - JSCS - जावास्क्रिप्ट कोड शैली :

JSCS आपकी स्टाइल गाइड को प्रोग्राम करने के लिए एक कोड स्टाइल लाइनर है। आप 150 से अधिक सत्यापन नियमों का उपयोग करके अपनी परियोजना के लिए जेएससीएस को कॉन्फ़िगर कर सकते हैं, जिसमें लोकप्रिय शैली गाइड जैसे कि jQuery, Airbnb, Google, और बहुत कुछ शामिल हैं।

यह कई प्रीसेट्स के साथ आता है जिन्हें आप कॉन्फ़िगरेशन फ़ाइल presetमें केवल निर्दिष्ट करके चुन सकते हैं .jscsrcऔर इसे कस्टमाइज़ कर सकते हैं - ओवरराइड, सक्षम या अक्षम कर सकते हैं:

{
    "preset": "jquery",
    "requireCurlyBraces": null
}

लोकप्रिय संपादकों के लिए निर्मित प्लगइन्स और एक्सटेंशन भी हैं।

और देखें:

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