डॉलर साइन ब्लूज़: जावास्क्रिप्ट और पीएचपी


18

मैंने C ++ और Java की प्रोग्रामिंग की, जहाँ सब कुछ सुरक्षित और सुंदर था। कंपाइलरों ने मुझे सुनिश्चित करने के लिए सुनिश्चित किया कि क्या मैं कभी भटका हूँ। बेशक, हर किसी ने कॉलेज में थोड़ा पर्ल किया, लेकिन मैंने इनहेल नहीं किया। इन दिनों बच्चे बैकेंड पर PHP और सामने की ओर जावास्क्रिप्ट के बारे में हैं। हिप होने की कोशिश में, मैं वही करता हूं (वेब ​​डेवलपमेंट के लिए)। मैं जिस समस्या को चला रहा हूं वह है मैं गलती से जावास्क्रिप्ट में नियमित चर के सामने एक डॉलर चिह्न ($) जोड़ देता हूं और निश्चित रूप से कोई भी कुछ नहीं कहता है क्योंकि यह कानूनी वाक्यविन्यास अक्सर jQuery वस्तुओं के लिए उपयोग किया जाता है।

क्या इस डॉलर चिह्न भ्रम को पकड़ने के लिए कोई डीबगिंग टूल या देव ट्रिक्स हैं? क्या आप अक्सर एक ही गलती करते हैं, और आप उससे भावनात्मक रूप से कैसे निपटते हैं? क्रोम देव उपकरण हमेशा नहीं देखते हैं कि यह एक जावास्क्रिप्ट त्रुटि है। मैं विकास के लिए PhPStorm और Emacs का उपयोग करता हूं, लेकिन वे मेरी मूर्खता को नहीं पकड़ते हैं, हालांकि मुझे संदेह है कि Emacs करता है, लेकिन इसके बावजूद मुझे इसके बारे में नहीं बताने का विकल्प चुनता है।

अगर आपको लगता है कि यह सवाल हास्यास्पद है, तो मुझे लगता है कि आप सही हैं। लेकिन हम एक ऐसी दुनिया में रहते हैं जहां एक चर के सामने एक डॉलर का चिह्न होता है। ऐसी दुनिया में, कुछ भी हास्यास्पद नहीं है।


2
भावनात्मक रूप से? बस अपने सहयोगियों पर चाबुक चलाओ।
क्रिस शिफहार

@ChrisSchiffhauer दुर्भाग्य से, मैं एकेडेमिया में काम करता हूं, जहां पूर्ण और पूरी तरह से अलगाव खेल का नाम है। मुझे एक सहकर्मी के साथ बैठक करने के लिए बाहर जाना होगा, और वह यह सब दूर कर देगा।
एलन ट्यूरिंग

जवाबों:


11

$चरों में उपयोग करने में कुछ भी गलत नहीं है । मैं इसे हर चर पर उद्देश्य से नहीं करूंगा, लेकिन यह अभी भी एक वैध वाक्यविन्यास है। jQuery एक उदाहरण है जहां $एक चर नाम के रूप में उपयोग किया जाता है। यही कारण है कि "क्रोम देव उपकरण हमेशा नहीं देखते हैं कि यह एक जावास्क्रिप्ट त्रुटि है" , क्योंकि पहली बार में कोई त्रुटि नहीं है।

यदि आप कोड लिखने से डरते हैं जैसे:

var demo = function demo() {
    var a = 123;
    ...
    $a = 456; // A new variable is created in global scope.
}

फिर आपको एक स्टाइल चेकर का उपयोग करना होगा, जैसे jsLint , jsHint या Google क्लोजर लाइनर । उनमें से कौन सा? चुनाव करना आपके ऊपर है। आपकी मदद करने के लिए, यहां कुछ नोट दिए गए हैं:

अंदाज

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

कई डेवलपर्स डगलस क्रॉकफोर्ड शैली से भी परिचित हैं। इस शैली को जावास्क्रिप्ट में विस्तार से समझाया गया है : द गुड पार्ट्स , एक पुस्तक जो कि जावास्क्रिप्ट के साथ काम करने वाले किसी भी व्यक्ति द्वारा खरीदी जा सकती है।

JsHint के लिए, मैं वास्तव में यह नहीं जान सकता कि सम्मेलनों का क्या उपयोग किया जाता है, और वेबसाइट स्वयं उस विषय पर बात करने से बचती है। शायद मुझे कुछ याद आ गया।

आईडीई द्वारा सहायता

JsLint और jsHint दोनों PhpStorm द्वारा समर्थित हैं । यही स्थिति Google क्लोजर लाइनर की भी है।

वातावरण

Google क्लोजर लिंटर उपकरण की एक श्रृंखला है । यदि आप पहले से ही Google क्लोजर कंपाइलर या Google क्लोजर लाइब्रेरी का उपयोग कर रहे हैं , तो अन्य उपकरणों के ऊपर क्लोजर लाइनर को चुना जाना बेहतर होगा।

सख़्ती

jsLint को सख्त माना जाता है। jsHint अधिक अनुमेय है, जो हमेशा अच्छी बात नहीं है। उदाहरण के लिए, jsHint के लिए jsLint को फोर्क करने के कारणों में से एक लेख में समझाया गया है जो बुरा कोड दिखाता है जो jsLint में त्रुटि उत्पन्न करेगा, लेकिन jsHint में नहीं:

/*global jQuery */

// Example taken from jQuery 1.4.2 source
jQuery.extend({
    /* ... */

    isEmptyObject: function( obj ) {
        for ( var name in obj ) {
            return false;
        }
        return true;
    }

    /* ... */
});

कोड खराब है, क्योंकि ऐसा लगता है कि जावास्क्रिप्ट में ब्लॉक गुंजाइश है, जबकि ऐसा नहीं है। जावास्क्रिप्ट देखें: द गुड पार्ट्स, पी। 102, परिशिष्ट A: भयंकर भाग, स्कोप। दूसरे शब्दों में, भाषा को जाने बिना कोड को देखते हुए, हम उम्मीद करते हैं कि हम nameलूप के बाहर दिखाई नहीं देंगे, जबकि यह दृश्यमान रहेगा।

Google क्लोजर लिंटर के रूप में, मेरा मानना ​​है कि यह jsLint और jsHint के बीच में कहीं है, लेकिन मुझे इस बात का समर्थन करने के लिए पर्याप्त जानकारी नहीं है।

निष्कर्ष

मैं jsHint से बचूंगा: यह बहुत अधिक अनुमति है, जिसका अर्थ है कि यह संभावित बग नहीं पाएगा जो अन्य लिंटर का पता लगाएगा। शैली गाइड जिसका उपयोग किया जाता है, उसे ढूंढना मुश्किल है।

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


+1: मुझे इसे मारो। जब मैंने F # से C # में भाषाओं को स्विच किया तो मैंने अपने सेमीकोलन को छोड़ना शुरू कर दिया, तो क्या मैं आपके दर्द को साझा कर सकता हूं;)
jw

2
बस एक नोट, क्योंकि ओपी PhpStorm का उपयोग कर रहा है: JSLint और JSHint दोनों एकीकृत हैं और मांग पर या मक्खी पर भी उनके कोड का निरीक्षण करने के लिए सेट किया जा सकता है। आपके उदाहरण में त्रुटियां पकड़ने में काफी आसान हैं।
यानि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.