Microsoft는 이 항목의 지침을 따르는 샘플 및 설명서를 개발합니다. 동일한 코딩 규칙을 따르는 경우 다음과 같은 이점을 얻을 수 있습니다.
독자가 레이아웃이 아닌 콘텐츠에 더 집중할 수 있도록 코드는 일관된 모양을 갖습니다.
독자는 이전 환경을 기반으로 가정할 수 있으므로 코드를 더 빨리 이해합니다.
코드를 더 쉽게 복사, 변경 및 유지 관리할 수 있습니다.
코드가 Visual Basic에 대한 "모범 사례"를 보여 주는지 확인하는 데 도움이 됩니다.
명명 규칙
명명 지침에 대한 자세한 내용은 명명 지침 항목을 참조하세요.
변수 이름의 일부로 "My" 또는 "my"를 사용하지 마세요. 이 연습은
My
개체와의 혼동을 초래합니다.자동 생성된 코드에서 개체의 이름을 지침에 맞게 변경할 필요가 없습니다.
레이아웃 규칙
탭을 공백으로 변환하고, 4개의 공백을 사용하여 스마트하게 들여쓰기 합니다.
코드를 보기 좋게 정리(포맷팅)하는 기능을 사용하여 코드 편집기에서 코드를 다시 정리합니다. 자세한 내용은 옵션, 텍스트 편집기, 기본(Visual Basic)을 참조하세요.
한 줄에 하나의 문장만 사용하십시오. Visual Basic 줄 구분 문자(
:
)를 사용하지 마세요.언어에서 허용하는 모든 위치에서 암시적 줄 연속을 위해 명시적 줄 연속 문자 "
_
"를 사용하지 않도록 합니다.줄당 하나의 선언만 사용합니다.
코드의 Pretty 목록(서식 변경)이 연속 줄의 서식을 자동으로 지정하지 않는 경우 한 탭 정지에서 연속 줄을 수동으로 들여쓰기합니다. 그러나 목록의 항목은 항상 왼쪽에 맞춥니다.
a As Integer, b As Integer
메서드와 속성 정의 사이에 빈 줄을 하나 이상 추가합니다.
주석 작성 규칙
코드 줄의 끝에 있는 대신 별도의 줄에 주석을 배치합니다.
댓글 텍스트를 대문자로 시작하고 마침표로 끝냅니다.
메모 구분 기호(
'
)와 메모 텍스트 사이에 공백을 하나 삽입합니다.' Here is a comment.
주석을 서식이 지정된 별표 블록으로 묶지 마세요.
프로그램 구조
새 콘솔 애플리케이션에 대해서는
Main
메서드를 사용할 때 기본 생성자를 사용하고, 명령줄 인수에는My
를 사용하십시오.Sub Main() For Each argument As String In My.Application.CommandLineArgs ' Add code here to use the string variable. Next End Sub
언어 지침
문자열 데이터 형식
다음 코드에 나와 있는 것처럼 문자열 보간을 사용하여 짧은 문자열을 연결합니다.
MsgBox($"hello{vbCrLf}goodbye")
루프에 문자열을 추가하려면 개체를 StringBuilder 사용합니다.
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
이벤트 핸들러에서의 느슨한 대리자
인수(Object
및 EventArgs
)를 이벤트 처리기에 명시적으로 한정하지 마세요. 이벤트에 전달되는 이벤트 인수(예 sender As Object
: 예 e As EventArgs
: )를 사용하지 않는 경우 완화된 대리자를 사용하고 코드에서 이벤트 인수를 그대로 둡니다.
Public Sub Form1_Load() Handles Form1.Load
End Sub
서명되지 않은 데이터 형식
- 필요한 경우를 제외하고 부호 없는 형식 대신 사용합니다
Integer
.
배열
선언줄에서 배열을 초기화할 때 짧은 구문을 사용합니다. 예를 들어 다음 구문을 사용합니다.
Dim letters1 As String() = {"a", "b", "c"}
다음 구문을 사용하지 마세요.
Dim letters2() As String = New String() {"a", "b", "c"}
변수가 아닌 형식에 배열 지정자를 배치합니다. 예를 들어 다음 구문을 사용합니다.
Dim letters4 As String() = {"a", "b", "c"}
다음 구문을 사용하지 마세요.
Dim letters3() As String = {"a", "b", "c"}
기본 데이터 형식의 배열을 선언하고 초기화할 때 { } 구문을 사용합니다. 예를 들어 다음 구문을 사용합니다.
Dim letters5 As String() = {"a", "b", "c"}
다음 구문을 사용하지 마세요.
Dim letters6(2) As String letters6(0) = "a" letters6(1) = "b" letters6(2) = "c"
With 키워드 사용
한 개체에 대해 일련의 호출을 수행할 때 키워드를 사용하는 것이 With
좋습니다.
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
예외 처리를 할 때는 Try...Catch 및 Using 문을 사용하세요.
On Error Goto
는 사용하지 마세요.
IsNot 키워드 사용
... IsNot Nothing
대신 Not ... Is Nothing
사용합니다.
새 키워드
짧은 인스턴스화를 사용합니다. 예를 들어 다음 구문을 사용합니다.
Dim employees As New List(Of String)
앞의 줄은 다음과 같습니다.
Dim employees2 As List(Of String) = New List(Of String)
매개 변수가 없는 생성자 대신 새 개체에 개체 이니셜라이저를 사용합니다.
Dim orderLog As New EventLog With { .Log = "Application", .Source = "Application Name", .MachineName = "Computer Name"}
이벤트 처리
Handles
대신AddHandler
사용Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click End Sub
AddressOf
를 사용하고 대리자를 명시적으로 인스턴스화하지 마세요.Dim closeItem As New ToolStripMenuItem( "Close", Nothing, AddressOf ToolStripMenuItem1_Click) Me.MainMenuStrip.Items.Add(closeItem)
이벤트를 정의할 때 짧은 구문을 사용하고 컴파일러가 대리자를 정의하도록 합니다.
Public Event SampleEvent As EventHandler(Of SampleEventArgs) ' or Public Event SampleEvent(ByVal source As Object, ByVal e As SampleEventArgs)
메서드를 호출
Nothing
하기 전에 이벤트가RaiseEvent
null인지 여부를 확인하지 않습니다.RaiseEvent
는 이벤트를 발생시키기 전에Nothing
를 확인합니다.
공유 멤버 사용
인스턴스 변수가 아닌 클래스 이름을 사용하여 멤버를 호출 Shared
합니다.
XML 리터럴 사용
XML 리터럴은 XML로 작업할 때 발생하는 가장 일반적인 작업(예: 로드, 쿼리 및 변환)을 간소화합니다. XML을 사용하여 개발하는 경우 다음 지침을 따릅니다.
XML 리터럴을 사용하여 XML API를 직접 호출하는 대신 XML 문서 및 조각을 만듭니다.
파일 또는 프로젝트 수준에서 XML 네임스페이스를 가져와 XML 리터럴에 대한 성능 최적화를 활용합니다.
XML 축 속성을 사용하여 XML 문서의 요소 및 특성에 액세스합니다.
포함된 식을 사용하여 메서드와 같은 API 호출을 사용하는 대신 값을 포함하여 기존 값으로부터 XML을 생성하십시오.
Private Function GetHtmlDocument( ByVal items As IEnumerable(Of XElement)) As String Dim htmlDoc = <html> <body> <table border="0" cellspacing="2"> <%= From item In items Select <tr> <td style="width:480"> <%= item.<title>.Value %> </td> <td><%= item.<pubDate>.Value %></td> </tr> %> </table> </body> </html> Return htmlDoc.ToString() End Function
LINQ 쿼리
쿼리 변수에 의미 있는 이름을 사용합니다.
Dim seattleCustomers = From cust In customers Where cust.City = "Seattle"
쿼리의 요소에 이름을 제공하여 익명 형식의 속성 이름이 파스칼 표기법을 사용하여 올바른 대문자로 표시되도록 합니다.
Dim customerOrders = From customer In customers Join order In orders On customer.CustomerID Equals order.CustomerID Select Customer = customer, Order = order
결과의 속성 이름이 모호하면 속성 이름을 바꿉니다. 예를 들어 쿼리에서 고객 이름과 주문 ID를 반환하는 경우, 결과에서
Name
와ID
로 남겨두지 말고 이름을 바꾸십시오.Dim customerOrders2 = From cust In customers Join ord In orders On cust.CustomerID Equals ord.CustomerID Select CustomerName = cust.Name, OrderID = ord.ID
쿼리 변수 및 범위 변수 선언에서 형식 유추를 사용합니다.
Dim customerList = From cust In customers
쿼리 절을
From
문 아래에 정렬하십시오.Dim newyorkCustomers = From cust In customers Where cust.City = "New York" Select cust.LastName, cust.CompanyName
이후 쿼리 절이 필터링된 데이터 집합에서 작동하도록 다른 쿼리 절 앞에 절을 사용합니다
Where
.Dim newyorkCustomers2 = From cust In customers Where cust.City = "New York" Order By cust.LastName
조인 작업을 명시적으로 정의하려면
Join
절을 사용하고, 암시적으로 정의하려면Where
절을 사용하십시오.Dim customerList2 = From cust In customers Join order In orders On cust.CustomerID Equals order.CustomerID Select cust, order
참고하십시오
.NET