अतीत में मैंने हमेशा HTML में वर्ग और आईडी विशेषताओं को परिभाषित करने के लिए अंडरस्कोर का उपयोग किया है । पिछले कुछ वर्षों में मैं डैश में बदल गया, ज्यादातर समुदाय में खुद को प्रवृत्ति के साथ संरेखित करने के लिए , जरूरी नहीं कि क्योंकि यह मेरे लिए समझ में आता है।
मैंने हमेशा सोचा है कि डैश में अधिक कमियां हैं, और मुझे इसके लाभ नहीं मिलते हैं:
कोड पूरा करना और संपादन करना
अधिकांश संपादक डैश को शब्द विभाजक के रूप में मानते हैं, इसलिए मैं अपने इच्छित प्रतीक के माध्यम से टैब नहीं कर सकता। कहो कि कक्षा " featured-product" है, मुझे ऑटो-पूर्ण करना है " featured", एक हाइफ़न दर्ज करें, और " product" पूरा करें ।
अंडरस्कोर के साथ " featured_product" एक शब्द के रूप में माना जाता है, इसलिए इसे एक चरण में भरा जा सकता है।
दस्तावेज़ के माध्यम से नेविगेट करने के लिए भी यही बात लागू होती है। शब्दों से कूदना या हाइफ़न द्वारा वर्ग के नामों पर डबल-क्लिक करना।
(आम तौर पर, मैं टोकन के रूप में कक्षाओं और आईडी के बारे में सोचता हूं , इसलिए मेरे लिए यह समझ में नहीं आता है कि टोकन पर आसानी से एक टोकन होना चाहिए।)
अंकगणित ऑपरेटर के साथ अस्पष्टता
डैश का उपयोग जावास्क्रिप्ट में तत्वों को बनाने के लिए ऑब्जेक्ट-प्रॉपर्टी एक्सेस को तोड़ता है । यह केवल अंडरस्कोर के साथ संभव है:
form.first_name.value='Stormageddon';
(निश्चित रूप से मैं स्वयं इस तरह से फार्म तत्वों का उपयोग नहीं करता हूं, लेकिन जब डैश बनाम अंडरस्कोर पर एक सार्वभौमिक नियम के रूप में निर्णय लेते हैं, तो विचार करें कि कोई व्यक्ति हो सकता है।)
Sass जैसी भाषाएँ (विशेषकर कम्पास फ्रेमवर्क में) एक मानक के रूप में डैश पर बस गई हैं, यहां तक कि चर नामों के लिए भी। वे मूल रूप से शुरुआत में अंडरस्कोर का इस्तेमाल करते थे। तथ्य यह है कि यह अलग तरह से पार्स किया जाता है मुझे अजीब लगता है:
$list-item-10
$list-item - 10
भाषाओं में परिवर्तनशील नामकरण के साथ असंगति
दिन में वापस, मैं underscored_namesPHP, रूबी, एचटीएमएल / सीएसएस, और जावास्क्रिप्ट में चर के लिए लिखता था । यह सुविधाजनक और सुसंगत था, लेकिन फिर से "में फिट होने के लिए" अब मैं उपयोग करता हूं:
dash-caseHTML / CSS मेंcamelCaseजावास्क्रिप्ट मेंunderscore_casePHP और रूबी में
यह वास्तव में मुझे बहुत परेशान नहीं करता है, लेकिन मुझे आश्चर्य है कि ये उद्देश्य के कारण बहुत गलत तरीके से पेश आए। कम से कम अंडरस्कोर के साथ स्थिरता बनाए रखना संभव था:
var featured_product = $('#featured_product'); // instead of
var featuredProduct = $('#featured-product');
अंतर उन स्थितियों को बनाते हैं जहां हमें अनावश्यक रूप से स्ट्रिंग्स का अनुवाद करना पड़ता है , साथ ही बग्स की क्षमता भी।
तो मैं पूछता हूं: समुदाय लगभग सार्वभौमिक रूप से डैश पर क्यों बस गया, और क्या कोई कारण हैं जो अंडरवॉटर को पछाड़ते हैं?
यह शुरू होने के समय के आसपास से एक संबंधित प्रश्न है, लेकिन मुझे लगता है कि यह स्वाद का मामला नहीं है (या नहीं होना चाहिए )। मैं यह समझना चाहता हूं कि हम सभी इस सम्मेलन में बस गए हैं अगर यह वास्तव में सिर्फ स्वाद का मामला था।