खोज…


चर नाम

चर डेटा रखती हैं। एक संज्ञा का उपयोग करते हुए, उनके डेटा प्रकार या दायरे के बाद नहीं , के लिए उनका उपयोग करने के बाद उन्हें नाम दें। यदि आप अपने चर (उदाहरण के लिए thing1, thing2, thing3 ) को संख्या के लिए मजबूर महसूस करते हैं, तो इसके बजाय एक उपयुक्त डेटा संरचना का उपयोग करने पर विचार करें (उदाहरण के लिए एक सरणी, एक Collection या एक Dictionary )।

चरों के नाम जो मानों के चलने योग्य सेट का प्रतिनिधित्व करते हैं - जैसे कि एक सरणी, एक Collection , एक Dictionary , या कक्षों की Range , बहुवचन होना चाहिए।

कुछ सामान्य VBA नामकरण परंपराएँ इस प्रकार हैं:


प्रक्रिया-स्तरीय चर के लिए :

camelCase

Public Sub ExampleNaming(ByVal inputValue As Long, ByRef inputVariable As Long)

    Dim procedureVariable As Long
    Dim someOtherVariable As String

End Sub

मॉड्यूल स्तर के चर के लिए:

PascalCase

Public GlobalVariable As Long
Private ModuleVariable As String

स्थिरांक के लिए:

SHOUTY_SNAKE_CASE का उपयोग आमतौर पर चर से स्थिरांक को अलग करने के लिए किया जाता है:

Public Const GLOBAL_CONSTANT As String = "Project Version #1.000.000.001"
Private Const MODULE_CONSTANT As String = "Something relevant to this Module"

Public Sub SomeProcedure()

    Const PROCEDURE_CONSTANT As Long = 10

End Sub

हालाँकि PascalCase नाम क्लीनर दिखने वाला कोड बनाते हैं और उतने ही अच्छे होते हैं, दिए गए IntelliSense चर और PascalCase लिए विभिन्न आइकन का उपयोग करता है:

IntelliSense लगातार फू और चर बार के लिए विभिन्न आइकन का उपयोग कर रहा है


हंगेरियन नोटेशन

उन्हें उनके नाम के लिए उपयोग किया जाता है, उनके डेटा प्रकार या दायरे के बाद नहीं

"हंगेरियन नोटेशन यह देखना आसान बनाता है कि चर का प्रकार क्या है"

यदि आप अपना कोड लिखते हैं, जैसे कि प्रक्रियाएं सिंगल रिस्पॉन्सिबिलिटी प्रिंसिपल (जैसा कि होना चाहिए) का पालन करती हैं, तो आपको किसी भी प्रक्रिया के शीर्ष पर परिवर्तनीय घोषणाओं की एक स्क्रीनफुल पर नहीं देखना चाहिए; अपने पहले उपयोग के लिए जितना संभव हो सके चर घोषित करें, और यदि आप उन्हें स्पष्ट प्रकार से घोषित करते हैं, तो उनका डेटा प्रकार हमेशा सादे दृष्टि में होगा। VBE के Ctrl + i शॉर्टकट का उपयोग टूलटिप में एक चर के प्रकार को प्रदर्शित करने के लिए भी किया जा सकता है।

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

इस उदाहरण में iFile और strFile पर विचार करें:

Function bReadFile(ByVal strFile As String, ByRef strData As String) As Boolean
    Dim bRetVal As Boolean
    Dim iFile As Integer

    On Error GoTo CleanFail

    iFile = FreeFile
    Open strFile For Input As #iFile
    Input #iFile, strData

    bRetVal = True

CleanExit:
    Close #iFile
    bReadFile = bRetVal
    Exit Function
CleanFail:
    bRetVal = False
    Resume CleanExit
End Function

से तुलना:

Function CanReadFile(ByVal path As String, ByRef outContent As String) As Boolean
    On Error GoTo CleanFail

    Dim handle As Integer
    handle = FreeFile

    Open path For Input As #handle
    Input #handle, outContent

    Dim result As Boolean
    result = True

CleanExit:
    Close #handle
    CanReadFile = result
    Exit Function
CleanFail:
    result = False
    Resume CleanExit
End Function

strData को शीर्ष उदाहरण में ByRef पास किया गया है, लेकिन इस तथ्य के साथ कि हम यह देखने के लिए पर्याप्त भाग्यशाली हैं कि यह स्पष्ट रूप से इस तरह से पारित हो गया है, कोई संकेत नहीं है कि strData वास्तव में फ़ंक्शन द्वारा वापस आ गया है।

नीचे का उदाहरण इसे outContent नाम outContent ; यह out उपसर्ग है क्या हंगेरियन नोटेशन के लिए आविष्कार किया गया था: यह स्पष्ट करने में मदद करने के लिए कि एक चर का उपयोग किस लिए किया जाता है , इस मामले में स्पष्ट रूप से इसे "आउट" पैरामीटर के रूप में पहचानने के लिए।

यह उपयोगी है, क्योंकि IntelliSense स्वयं द्वारा ByRef प्रदर्शित नहीं करता है, तब भी जब पैरामीटर स्पष्ट रूप से संदर्भ द्वारा पारित किया जाता है:

IntelliSense दिखा रहा है "CanReadFile (ByVal path as String, outComment As String) बूलियन के रूप में" जब वास्तविक हस्ताक्षर संदर्भ के अनुसार स्पष्ट रूप से पारित कर दिया जाए ("ByRef")

जिससे होता है...

हंगेरियन सही किया

हंगेरियन नोटेशन मूल रूप से चर प्रकार के साथ कुछ भी नहीं था । वास्तव में, हंगेरी संकेतन किया सही वास्तव में उपयोगी है। इस छोटे उदाहरण पर विचार करें ( ByVal और As Integer को संक्षिप्त As Integer हटा दिया गया है):

Public Sub Copy(iX1, iY1, iX2, iY2)
End Sub

से तुलना:

Public Sub Copy(srcColumn, srcRow, dstColumn, dstRow)
End Sub

src और dst यहां हंगेरियन नोटेशन उपसर्ग हैं, और वे उपयोगी जानकारी देते हैं जो अन्यथा पहले से ही पैरामीटर नामों या इंटेलीजेंसी से हमें घोषित प्रकार नहीं दिखा सकते हैं।

बेशक, यह उचित अवहेलना और वास्तविक शब्दों का उपयोग करने के लिए सभी को व्यक्त करने का एक बेहतर तरीका है, जिसे ज़ोर से सुना जा सकता है और समझ में आता है - एक आकस्मिक उदाहरण के रूप में:

Type Coordinate
    RowIndex As Long
    ColumnIndex As Long
End Type

Sub Copy(source As Coordinate, destination As Coordinate)
End Sub

प्रक्रिया के नाम

प्रक्रियाएं कुछ करती हैं । एक क्रिया का उपयोग करके वे क्या कर रहे हैं, उन्हें नाम दें। यदि किसी प्रक्रिया का सटीक नामकरण संभव नहीं है, तो संभव है कि प्रक्रिया बहुत सी चीजें कर रही हो और छोटे, अधिक विशिष्ट प्रक्रियाओं में टूट जाए।

कुछ सामान्य VBA नामकरण परंपराएँ इस प्रकार हैं:


सभी प्रक्रियाओं के लिए:

PascalCase

Public Sub DoThing()

End Sub

Private Function ReturnSomeValue() As [DataType]

End Function

घटना हैंडलर प्रक्रियाओं के लिए:

ObjectName_EventName

Public Sub Workbook_Open()

End Sub

Public Sub Button1_Click()

End Sub

घटना संचालकों को आमतौर पर VBE द्वारा स्वचालित रूप से नामित किया जाता है; ऑब्जेक्ट और / या हैंडल किए गए इवेंट का नाम लिए बिना उनका नाम बदलने से कोड टूट जाएगा - कोड चलेगा और संकलन करेगा, लेकिन हैंडलर प्रक्रिया अनाथ हो जाएगी और कभी भी निष्पादित नहीं होगी।

बूलियन सदस्य

एक बूलियन-वापसी समारोह पर विचार करें:

Function bReadFile(ByVal strFile As String, ByRef strData As String) As Boolean
End Function

से तुलना:

Function CanReadFile(ByVal path As String, ByRef outContent As String) As Boolean
End Function

Can प्रीफिक्स, b प्रीफिक्स के समान उद्देश्य को पूरा करता है : यह Boolean रूप में फ़ंक्शन के रिटर्न मान की पहचान करता है। लेकिन b से बेहतर पढ़ Can है:

If CanReadFile(path, content) Then

की तुलना में:

If bReadFile(strFile, strData) Then

बुलियन-लौटने वाले सदस्यों (कार्यों और गुणों) के सामने उपसर्गों जैसे कि Can , Is या Has का उपयोग करने पर विचार करें, लेकिन तभी जब वे मूल्य जोड़ते हैं। यह वर्तमान Microsoft नामकरण दिशानिर्देशों के अनुरूप है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow