2012-04-18 12 views
5

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

निम्नलिखित (स्पष्ट घोषणा):

Dim foo 
foo = "Bar" 

या यह (कोई घोषणा):

Dim foo As String 
foo = "Bar" 

इस (अंतर्निहित घोषणा) के रूप में बस के रूप में अच्छी तरह से काम करने के लिए लगता है

foo = "Bar" 

मुझे पता है कि सी # में मुझे इसका उपयोग करने से पहले एक चर घोषित करने की आवश्यकता है, और यह स्पष्ट और स्पष्ट घोषणा आयन दोनों स्वीकार्य हैं। मुझे यह भी पता है कि पायथन में, आप अपने चर का उपयोग करने से पहले अपने चर घोषित नहीं करते हैं।

विजुअल बेसिक 6 (और विस्तार VBA द्वारा) के संबंध में जो उचित है?

धन्यवाद

+0

+1 एक बहुत अच्छा सवाल! –

उत्तर

6

मैं स्पष्ट रूप से VB6 में मेरी चर घोषित करना चाहिए?

हां। क्यूं कर?

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

वीबी वैरिएबल को टाइप वैरिएंट के रूप में डिफ़ॉल्ट करता है। एक प्रकार का प्रकार वैरिएबल स्ट्रिंग्स, इंटीग्रर्स से लंबे समय तक पूर्णांक, तिथियों तक, मुद्रा आदि तक किसी भी प्रकार का डेटा रख सकता है। डिफ़ॉल्ट रूप से "वेरिएंट" "धीमे" प्रकार के चर होते हैं।

और

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

विषय: करने के लिए 'अरे' मानव है (प्वाइंट 3 देखें)

लिंक: http://siddharthrout.wordpress.com/2011/08/01/to-err-is-human/

ऊपर के लिंक भी कोडिंग है कि एक/लेना चाहिए कर सकते हैं से संबंधित अन्य भागों को शामिल किया गया की देखभाल।

एचटीएच

+0

+1 आपके चर घोषित करना हमेशा अच्छा होता है। हालांकि, अगर आप उन्हें घोषित नहीं करते हैं तो उन्हें उचित पहचानकर्ता के साथ $, और आदि के साथ प्रत्ययित करें ताकि उन्हें संस्करण के रूप में नहीं माना जा सके। जैसे एबीसी $ स्ट्रिंग है, xyz और लंबे समय तक होगा। –

9

यह एक अच्छा आदत है।

विकल्प स्पष्टीकरण नामक एक वीबी विकल्प है। चालू पर है कि सेट के साथ, तो वीबी बलों आप एक चर घोषित करने के लिए इससे पहले कि आप इसका इस्तेमाल करते हैं: कोई और अधिक

foo = "Bar" 

कि अपने कोड में बाद में चर नाम गलत लिख के साथ मदद करता है ... कि बिना, आप चर typso कर सकते हैं नाम, आपका प्रोग्राम संकलित करता है लेकिन काम नहीं करेगा, और इसे खोदना मुश्किल है।

+0

+1। आप प्रत्येक मॉड्यूल में 'DefObj ए-जेड' का भी उपयोग कर सकते हैं ताकि यह बहुत संभावना न हो कि आप प्रकार के बिना 'मंद फू' लिखकर गलती से इस प्रकार को छोड़ देंगे। [जिम मैक] के लिए कुडोस (http://stackoverflow.com/a/1905044/15639) ... ओह बीटीडब्ल्यू टाइपो जानबूझकर शब्द टाइपो है :) – MarkJ

9

उपकरण/विकल्प, संपादक टैब में, जांचें परिवर्तनीय घोषणा चेकबॉक्स की आवश्यकता है। यह स्वचालित रूप से विकल्प स्पष्ट प्रत्येक नए कोड मॉड्यूल में जोड़ देगा।

enter image description here

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

4

मुझे लगता है कि आप हमेशा अपने चर घोषित करते हैं। इसे प्रत्येक कोड मॉड्यूल में विकल्प स्पष्टीकरण सेट करके मजबूर किया जा सकता है। आप VB6 को टूल-> विकल्प पर जाकर स्वचालित रूप से आपके लिए ऐसा कर सकते हैं, संपादक टैब में चेक परिवर्तनीय घोषणा की आवश्यकता है।

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

आप अपने चर के प्रकार की घोषणा नहीं करते हैं, लेकिन मैं यह भी सिफारिश करता हूं कि आप ऐसा करें। एक वैरिएबल का डिफ़ॉल्ट प्रकार वेरिएंट है, जिसमें एक छोटा प्रदर्शन ओवरहेड होता है और यदि आप सी ++ या सी # (यदि कोई ऐसा करता है) के उपयोग के लिए COM ऑब्जेक्ट्स बना रहा है तो कुछ समस्याएं पैदा करें।

+0

+1। आप प्रत्येक मॉड्यूल में 'DefObj ए-जेड' का भी उपयोग कर सकते हैं ताकि यह बहुत संभावना न हो कि आप प्रकार के बिना 'मंद फू' लिखकर गलती से इस प्रकार को छोड़ देंगे। [जिम मैक] के लिए कुडोस (http://stackoverflow.com/a/1905044/15639) – MarkJ