2012-01-10 15 views
5

मेरे सभी स्थिरांक नीचे मेरी जावास्क्रिप्ट फ़ाइल के शीर्ष के पास हैं।JQuery अपने स्थिरांक को समेकित क्यों नहीं करता है?

जब मैं कोर JQuery फ़ाइल खोज, कुछ भी लगातार के लिए आता है और मुझे लगता है कि वे बाहर स्थिरांक खींच रहे हैं नहीं देख सकते हैं? क्या उनके पास कोई नहीं है, क्या वे कोड के माध्यम से फैल गए हैं, यदि हां, तो वे उन्हें समेकित क्यों नहीं करते?

मैं भाषा के बारे में चिंतित const का निर्माण नहीं कर रहा हूँ, लेकिन नीचे की तरह एक जगह में अपने स्थिरांक बाहर खींच की अवधारणा।

var Constant = 
{ 
    VALIDATE_ON:     1, 
    JSON_ON:      0, 
    ROOT:       '', 
    PICTURES:      '../pictures/', 
    TEXT:       '../text/', 
    FAVICON:      '../images/logo_small.ico', 
    IMAGES:       '../images/', 
    GATEWAY:      'class.ControlEntry.php', 
    ENTER_KEY:      13, 
    SECOND:       1000, 
    MINUTE:       60, 
    HOUR:       3600, 
    DAY:       43200, 
    AML: 
    { 
     "PASS":      0, 
     "FAIL":      1, 
     "NOTDEFINED":    2 
    } 
}; 
+0

कोड अधिक मॉड्यूलर और आसान है यदि इस पर काम करने वाले कई अलग-अलग लोग हैं जो स्थिरांक को उस क्षेत्र/मॉड्यूल में परिभाषित किया गया है जहां उनका उपयोग पूरे प्रोजेक्ट के लिए एक स्थान के बजाय किया जाता है। जो मैंने jQuery प्रोजेक्ट के बारे में देखा है, उससे आम तौर पर वे क्या कर रहे हैं (हालांकि मुझे नहीं लगता कि यह पूरी तरह से संगत है)। – jfriend00

+0

आपके कोड उदाहरण में स्थिरांक को छोटा नहीं किया जा सकता है (आपके द्वारा उपयोग किए जाने वाले टूल के आधार पर)। आपको उनमें से प्रत्येक को एक अलग var बनाना चाहिए। – Prinzhorn

उत्तर

4

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

तो, जाहिर है यह एक अच्छा विचार अपने स्थिरांक मजबूत करने के लिए है कि, बस वैश्विक क्षेत्र को प्रदूषित नहीं है।

+0

@downvoters_are_sissies, ओह, क्षमा करें। मुझे 'आर्क' परिभाषा नहीं मिली :-) आपने अपना प्रश्न संपादित करना होगा। अच्छा, अब यह सही है। आपके कोड के साथ कोई समस्या नहीं है। –

+0

@downvoters_are_sissies, हाँ regexes, उन्हें दोहराने से बचने के लिए स्थिरांक के रूप में परिभाषित किया जाता है। मान लें कि jQuery में regexes आम हैं, यही कारण है कि वे एक ही स्थान में परिभाषित किया गया है। –

+0

@downvoters_are_sissies, यह जावास्क्रिप्ट में स्कॉइंग के बारे में है। वैरिएबल/स्थिरांक को केवल उचित दायरे में परिभाषित करें जिनकी आवश्यकता होगी। –

1

यह दृढ़ता से प्रोग्रामिंग शैली पर निर्भर करता है। jQuery में jQuery फ़ंक्शन की भिखारी पर कुछ स्थिरांक हैं, लेकिन इसमें बहुत सारे 'स्थिरांक' हैं जो पूरे फ़ाइल के माध्यम से बिखरे हुए तारों के रूप में हैं।

व्यक्तिगत तौर पर मैं फ़ाइल के अंत में स्थिरांक रखने के लिए पसंद करते हैं।

वैसे भी इसे अलग और स्थिरांक को मजबूत करता है, तो आप उन्हें कई स्थानों में इस्तेमाल करेगा (मैं कई स्थानों में एक निरंतर का उपयोग कर मतलब) के लिए अच्छा है। लेकिन यदि आप इसे अपने कोड में अपेक्षाकृत करीब एक या दो बार उपयोग करेंगे, तो इसे अपने उपयोग के करीब लगातार रखना बेहतर होगा - इसे पढ़ने में आसान होगा, क्योंकि आपको पढ़ने के दौरान कोड को ऊपर और नीचे स्क्रॉल करने के लिए मजबूर नहीं किया जाएगा।

कोड के अनुसार आपके द्वारा दी गई - आप एक ही स्थान में सभी स्थिरांक की है। आईएमएचओ उन्हें समूहों में अलग करना बेहतर होगा उदा।

var Paths = { 
    ROOT:  '', 
    PICTURES: '../pictures/', 
    TEXT:  '../text/', 
    FAVICON: '../images/logo_small.ico', 
    IMAGES:  '../images/', 
    GATEWAY: 'class.ControlEntry.php' 
}; 

var TimeCounts = { 
    SECOND: 1000, 
    MINUTE: 60, 
    HOUR:  3600, 
    DAY:  43200 
}; 

var KeyCodes = { 
    ENTER_KEY: 13 
}; 

क्योंकि जब आप का उपयोग करें इसे और अधिक वर्बोज़ हो जाएगा (जाहिर है मैं समझता हूँ कि यह केवल उदाहरण कोड है, लेकिन मैं आप मेरा विचार दिखाना चाहते हैं)।

संबंधित मुद्दे