수색…
변수 이름
변수는 데이터를 보유합니다. 그들이 명사를 사용하지 데이터 유형 또는 범위 후 사용하는지 후에 이름을 지정합니다. 변수 (예 : 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
이름은보다 깨끗한 코드를 작성하고 마찬가지로 효과적입니다.
헝가리 표기법
자신의 데이터 유형 이나 범위가 아닌 사용 된 후에 이름을 지정하십시오.
"헝가리 표기법을 사용하면 변수의 유형을 쉽게 알 수 있습니다."
프로 시저와 같은 코드를 작성하는 경우 (반드시 수행해야 할) 단일 책임 원칙을 준수해야합니다. 프로 시저의 맨 위에는 변수 선언을 한 눈에 보지 않아야합니다. 변수를 가능한 한 첫 번째 사용에 가깝게 선언하고 명시적인 유형으로 변수를 선언하면 해당 변수의 데이터 유형이 항상 명확하게 표시됩니다. VBE의 Ctrl + i 단축키는 변수의 유형을 툴팁에 표시하는데도 사용할 수 있습니다.
변수가 사용되는 것은 데이터 형식보다 훨씬 유용한 정보입니다. 특히 VBA와 같은 언어에서는 필요에 따라 유형을 행복하고 암시 적으로 형식을 다른 형식으로 변환합니다.
이 예제에서 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
표시하지 않기 때문에 매개 변수가 참조로 명시 적으로 전달 된 경우에도 유용합니다.
어느 것이 ...
헝가리어 완료
헝가리 표기법은 원래 변수 유형과 관련이 없습니다 . 사실, 바르게 헝가리어 표기법은 실제로 유용합니다. 이 작은 예제 ( ByVal
및 As Integer
가 간결하게 제거됨)를 고려하십시오.
Public Sub Copy(iX1, iY1, iX2, iY2)
End Sub
비교 대상 :
Public Sub Copy(srcColumn, srcRow, dstColumn, dstRow)
End Sub
src
및 dst
는 여기에 헝가리 표기법 접두사이며 매개 변수 이름이나 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
로 식별합니다. 하지만 Can
은 b
보다 읽기가 b
.
If CanReadFile(path, content) Then
비교 대상 :
If bReadFile(strFile, strData) Then
부울 반환 멤버 (함수 및 속성) 앞에 Can
, Is
또는 Has
와 같은 접두사를 사용하는 것이 좋지만 값을 추가 할 때만 고려하십시오. 이는 현재 Microsoft 명명 규칙을 준수 합니다.