जावास्क्रिप्ट नामकरण सम्मेलनों


12

मैं जावा बैकग्राउंड से हूं और जावास्क्रिप्ट में नया हूं। मैंने एकल चरित्र पैरामीटर नामों का उपयोग करके कई जावास्क्रिप्ट विधियों को देखा है, जैसे कि निम्न उदाहरण में।

doSomething(a,b,c)

मुझे यह पसंद नहीं है, लेकिन एक साथी जावास्क्रिप्ट डेवलपर ने मुझे आश्वस्त किया कि यह फ़ाइल आकार को कम करने के लिए किया गया है, यह देखते हुए कि जावास्क्रिप्ट फ़ाइलों को ब्राउज़र में स्थानांतरित किया जाना है।

फिर मैंने खुद को दूसरे डेवलपर से बात करते हुए पाया। उसने मुझे रास्ता दिखाया कि फ़ायरफ़ॉक्स पृष्ठ को तेज़ी से लोड करने के लिए चर नामों को काट देगा। क्या यह वेब ब्राउज़र के लिए एक मानक अभ्यास है?

जावास्क्रिप्ट में प्रोग्रामिंग करते समय सबसे अच्छा अभ्यास नामकरण रूपांतरण क्या होने चाहिए? क्या पहचानकर्ता लंबाई मायने रखती है, और यदि हां, तो किस हद तक?


13
मुझे अत्यधिक संदेह है कि ब्राउज़र चर नाम बदलते हैं। की उपस्थिति में eval, यह सुरक्षित नहीं है (हाँ, evalभयानक है, लेकिन यह मानक का हिस्सा है और आप एक अनुकूलन के लिए मानक संकलन को नहीं फेंकते हैं) और यह यातायात को कम करने में थोड़ी सी भी मदद नहीं करता है - आप अभी भी पूरी फाइल भेजें।

4
मैंने अक्सर डेवलपर्स को लघु चर नामों के लाभों के बारे में बहस करते देखा है। उनकी बात मत सुनो। यह लगभग हमेशा एक बहाना है "मैं एक अच्छा नाम का आविष्कार करने के लिए बहुत अंगूठे हूँ" या "मैं बहुत सारे अक्षर टाइप करने के लिए बहुत आलसी हूँ"।
डॉक्टर ब्राउन

@DocBrown: यहां तक ​​कि मुझे यह पसंद नहीं आया। चूंकि मैं जावास्क्रिप्ट में एक विशेषज्ञ नहीं हूं, इसलिए मुझे सबसे अच्छा अभ्यास पता था।
ManuPK

दिन के अंत में सार्थक विधि नामों का उपयोग करने के लिए 50-100KB अतिरिक्त डेटा के बारे में बात कर रहे थे? यदि 100KB गति की समस्या का कारण बनता है, तो इसका समाधान करने की कोशिश करने लायक नहीं है, क्योंकि उपयोगकर्ताओं का एक बड़ा पर्याप्त पूल उस समस्या का अनुभव नहीं करेगा।
रामहाउंड

जवाबों:


26

आप पाएंगे कि डेवलपर्स स्वयं छोटे चर नामों का उपयोग नहीं कर रहे हैं । जबकि विकासशील, वे सार्थक और विस्तृत चर नामों का उपयोग कर रहे हैं।

तो फिर , निर्माण / रिलीज प्रक्रिया में, कोड वे लिखा है दौड़ा एक minifier / के माध्यम से है अस्पष्टकर्ता एक के रूप में, फ़ाइल के आकार को कम करने के इरादे से सबसे अच्छा अभ्यास के लिए एक वेबसाइट तेजी लाने के लिए। यह एक है वैकल्पिक कदम अगर तुम परवाह है कि प्रदर्शन के बारे में ज्यादा। अधिकांश छोटी वेबसाइटें ऐसा नहीं करती हैं।

आप , एक डेवलपर के रूप में, minification / obfuscation प्रक्रिया की परवाह नहीं करना चाहिए ; अपना कोड लिखें ताकि यह पठनीय, सार्थक, अच्छी तरह से प्रलेखित और अच्छी तरह से संरचित हो। फिर यदि आप प्रदर्शन के बारे में इतना ध्यान रखते हैं (वैकल्पिक, मत भूलो!), कोड को छोटा करने के लिए अपनी रिलीज़ प्रक्रिया में एक मिनीफ़ायर / ऑबफ्यूज़ेटर पेश करें (सफेद स्थान, नई लाइनें, टिप्पणियां आदि हटा दें) और इसे मानने के लिए (जैसे सामान्य चर) नाम नहीं)। एक अच्छा लेख जो वर्णन करता है कि ओबसेकेशन बनाम मिनिफिकेशन यहाँ पाया जा सकता है

इसके अतिरिक्त, डेस्कटॉप फायरफॉक्स परिवर्तनशील नामों की अवधि को कम नहीं करेगा । पृष्ठ डाउनलोड को गति देने के लिए चर नामों का ट्रंकेशन है। जब तक फ़ायरफ़ॉक्स को फ़ाइल मिलती है, तब तक यह पहले ही डाउनलोड हो चुका होता है इसलिए ऐसा करने की कोई आवश्यकता नहीं है। आपका दोस्त एक प्लगइन चला सकता है जो यह कर रहा है; किस मामले में, उसे इसे अनइंस्टॉल करने के लिए कहें, क्योंकि यह बेकार है।

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


11

नहीं, सभी ब्राउज़र प्रदर्शन के साथ मदद करने के लिए जावास्क्रिप्ट को स्वचालित रूप से छोटा नहीं करेंगे।

हालांकि, जावास्क्रिप्ट के मामले में, आप कोड पठनीयता / रख-रखाव की गति या सुरक्षा के प्रसंस्करण में लाभ के लिए, क्योंकि वहाँ उपकरण कहा जाता है बलिदान नहीं करना चाहिए ऑबफस्केटर और अन्य उपकरण कहा जाता shinkers (या कम्प्रेसर) जो इस उद्देश्य के लिए डिजाइन किए गए थे।

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

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


2

समय से पहले फ़ाइल आकार के बारे में चिंता मत करो। जबकि यह हमेशा एक चिंता का विषय है, पठनीयता और रखरखाव अधिक महत्वपूर्ण है।

इसके साथ ही कहा, तो आप शायद जाना चाहिए servining न्यूनतम किया गया (जैसे, के माध्यम से YUI कंप्रेसर वैसे भी) अपनी स्क्रिप्ट के संस्करणों।

यदि आप सामान्य रूप से वेब विकास के लिए सर्वोत्तम प्रथाओं में रुचि रखते हैं, तो मेरा सुझाव है कि प्रत्येक प्रोग्रामर को वेब विकास के बारे में क्या जानना चाहिए?


1

मैंने बहुत लंबे समय तक जावास्क्रिप्ट में काम किया।

हमारे पास एक नामकरण मानक था जिसे आपको सभी चरों के लिए हंगेरियन नोटेशन का उपयोग करना था ।

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

मैं समय से पहले अनुकूलन के खिलाफ सावधानी बरतूँगा। आप गन्दा कोड के साथ समाप्त होने की संभावना रखते हैं जो वास्तव में बहुत तेजी से नहीं चलता है।


5
हंगेरियन संकेतन? पुराने स्कूल। हंगेरियन नोटेशन एक पुराना विकास संबंध है और समय में इसकी सिफारिश नहीं की जाती है।
स्मोकफुट

2
मैं इसका थोड़ा बहुत उपयोग करता हूं, लेकिन केवल उन मूल्यों के लिए जो कि जेकरी द्वारा लपेटे जाते हैं, जिन्हें मैं एक $ के साथ शुरू करूंगा। हंगेरियन नोटेशन के साथ समस्या यह है कि लोग आपको "int" बनाम "स्ट्रिंग" के संदर्भ में लिखते थे, न कि किसी प्रोग्राम के शब्दार्थ के संदर्भ में
Zachary K

"विशेष रूप से जब आपके पास बड़े पैमाने पर जावास्क्रिप्ट फाइलें होती हैं, जहां आपको सामान खोजने की आवश्यकता होती है।" -- मैं तुम्हें सुनता हूं। लेकिन हंगेरियन संकेतन सिर्फ एक चिपका हुआ प्लास्टर है ... यह लंबे समय में मदद नहीं करेगा, यह बस भ्रमित करेगा जब आपको किसी चीज़ के प्रकार को बदलने की आवश्यकता होती है लेकिन सभी चर उपसर्गों को बदलने का समय नहीं होता है। उस सभी को स्वचालित करना जहां GWT अपने स्वयं के IMO में आता है।
फंकीब्रो

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

1
हंगेरियन नोटेशन उन चीजों में से एक है जिन्हें लोग वास्तव में समझे बिना तुरंत खारिज कर देते हैं कि क्यों। यह ऐसा पाया गया है कि यह उसी श्रेणी में है, gotoजहाँ लोग बिना मंत्र के 'डोन्ट यूज़ गोटो ... डोंट यूज़ गोटो ...' को बार-बार दोहराते हैं । वास्तविकता यह है कि यह आपके टूलकिट में सिर्फ एक उपकरण है। किसी भी उपकरण की तरह इसमें ऐसी स्थितियाँ हैं जहाँ यह उपयोगी है और ऐसी स्थितियाँ जहाँ यह इतनी उपयोगी नहीं है (या हानिकारक भी है)। यह ऐसा है जैसे किसी को हथौड़े के साथ लकड़ी के टुकड़े को देखने का बुरा अनुभव हो, और फिर घोषित किया कि 'हथौड़ों का इस्तेमाल कभी मत करो, आरी ज्यादा बेहतर है!' । व्यापक सामान्यीकरण हमेशा गलत होते हैं
मैटवेवी

1

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

  • functionNamesLikeThis, जैसे, getCashbackData () {}
  • variNamesLikeThis, जैसे, var alertInterval = 10;
  • ClassNamesLikeThis, जैसे, var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, उदा, var ColorOfChoice = {व्हाइट: "# FFFFFFF"}
  • methodNamesLikeThis, जैसे, var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, उदा। Var ©_UNIX = "01011970"

क्या आपके पास कुछ और जोड़ने के लिए लिंक का एक गुच्छा है? मेरा मतलब है कि आप यह भी नहीं समझाते कि डगलस क्रॉकफोर्ड कौन है।
रामहाउंड

0

"क्लीन कोड डेवलपर" दर्शन से प्रभावित (और अब आपको उपरोक्त पोस्ट से पता चलता है कि आपके चर नामों के आकार को छोटा करने के कारण प्रदर्शन पर शून्य प्रभाव पड़ेगा) मैं केवल सलाह दे सकता था:

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

    getXy(e) { return [e.pageX, e.pageY ] }

    जिसका वास्तव में कुछ भी मतलब हो सकता है (विशेष रूप से js की तरह एक पागल शिथिल टाइप की भाषा में;) आप कोड को स्वयं बनाते हैं

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

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

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

PS यदि आपको अत्याधुनिक जावास्क्रिप्ट कोड के साथ गति प्राप्त करने की आवश्यकता है, तो ऊपर के साथ या बाद में "प्रो जावास्क्रिप्ट तकनीकों" पर जॉन "मि। JQuery" रेसिग की पुस्तक पर एक नज़र डालें।

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