수색…


변수 이름

변수는 데이터를 보유합니다. 그들이 명사를 사용하지 데이터 유형 또는 범위 사용하는지 후에 이름을 지정합니다. 변수 (예 : 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

그러나 IntelliSense가 변수와 상수에 대해 다른 아이콘을 사용하면 주어진 PascalCase 이름은보다 깨끗한 코드를 작성하고 마찬가지로 효과적입니다.

상수 Foo 및 변수 막대에 대해 다른 아이콘을 사용하는 IntelliSense


헝가리 표기법

자신의 데이터 유형 이나 범위가 아닌 사용 된 후에 이름을 지정하십시오.

"헝가리 표기법을 사용하면 변수의 유형을 쉽게 알 수 있습니다."

프로 시저와 같은 코드를 작성하는 경우 (반드시 수행해야 할) 단일 책임 원칙을 준수해야합니다. 프로 시저의 맨 위에는 변수 선언을 한 눈에 보지 않아야합니다. 변수를 가능한 한 첫 번째 사용에 가깝게 선언하고 명시적인 유형으로 변수를 선언하면 해당 변수의 데이터 유형이 항상 명확하게 표시됩니다. VBE의 Ctrl + i 단축키는 변수의 유형을 툴팁에 표시하는데도 사용할 수 있습니다.

변수가 사용되는 것은 데이터 형식보다 훨씬 유용한 정보입니다. 특히 VBA와 같은 언어에서는 필요에 따라 유형을 행복하고 암시 적으로 형식을 다른 형식으로 변환합니다.

이 예제에서 iFilestrFile 을 고려하십시오.

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

위의 예제에서 strDataByRef 를 전달하지만 명시 적으로 전달 된 것을 볼 수 있다는 점에서 strData 가 실제로 함수에서 반환 된다는 표시는 없습니다.

아래의 예는 그것을 outContent 라고 outContent . 이 out 변수가 명확하게 "밖으로"매개 변수로 식별이 경우에 사용되는지 명확히하기 위해 : 접두어에 대한 헝가리어 표기법이 발명 된 것입니다.

IntelliSense 자체가 ByRef 표시하지 않기 때문에 매개 변수가 참조로 명시 적으로 전달 된 경우에도 유용합니다.

실제 서명이 outComment를 참조 ( "ByRef")에 의해 명시 적으로 전달 된대로 지정하면 IntelliSense가 "CanReadFile (ByVal path as String, String as outComment As String) As Boolean"을 표시합니다.

어느 것이 ...

헝가리어 완료

헝가리 표기법은 원래 변수 유형과 관련이 없습니다 . 사실, 바르게 헝가리어 표기법은 실제로 유용합니다. 이 작은 예제 ( ByValAs Integer 가 간결하게 제거됨)를 고려하십시오.

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

비교 대상 :

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

srcdst 는 여기에 헝가리 표기법 접두사이며 매개 변수 이름이나 IntelliSense에서 유추 할 수없는 유용한 정보를 전달하여 선언 된 유형을 보여줍니다.

물론 적절한 추상화 와 실제 단어를 사용하여 모든 것을 전달할 수있는 더 좋은 방법이 있습니다. 실제 단어는 큰 소리로 발음하고 이해할 수 있습니다 - 인위적인 예로서 :

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 로 식별합니다. 하지만 Canb 보다 읽기가 b .

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