Visual Basic 코딩 규칙
Microsoft 샘플 및이 항목의 지침에 따라 문서를 개발 합니다.같은 코딩 규칙을 따르는 경우 다음과 같은 이점을 얻을 수 있습니다.
잘 레이아웃이 아닌 내용에 집중할 수 있도록 코드의 일관성을 해야 합니다.
독자 코드는 이전 경험을 기반으로 가정을 할 수 있기 때문에 보다 신속 하 게 이해 합니다.
복사, 변경 하 고 코드를 더 쉽게 유지 관리할 수 있습니다.
데 도움이 되도록 코드를 Visual Basic 대 한 "최상의 방법" 보여 줍니다.
명명 규칙
명명 지침에 대 한 내용은 Guidelines for Names 항목입니다.
변수 이름의 일부로 "My"나 "my"를 사용하지 마십시오.이 이렇게와 혼동의 My 개체입니다.
하는 지침에 맞게 자동으로 생성 된 코드에서 개체의 이름을 변경 하지 않아도 됩니다.
레이아웃 규칙
탭을 공백으로 삽입 하 고 네 개의 공백 들여쓰기와 들여쓰기를 사용 합니다.자세한 내용은 방법: 편집기 탭 및 들여쓰기 옵션 설정을 참조하십시오.
사용 꽤 (코드를 다시 포맷)을 나열 코드 편집기의 코드 서식 다시 지정 합니다.자세한 내용은 옵션, 텍스트 편집기, 기본(Visual Basic)을 참조하십시오.
한 줄에 하나의 문만 사용합니다.Visual Basic 줄 구분 기호 문자를 사용 하지 않습니다 (:)
언어 허용 때마다 암시적 줄 연속 대신 명시적 줄 연속 문자 "_"를 사용 하지 마십시오.
한 줄에 하나의 선언만 사용합니다.
경우 꽤 (코드의 서식을 다시 지정) 목록 형식 연속 된 줄 연속 된 줄을 탭 정지 하나 자동, 수동으로 들여쓰기 하지 않습니다.그러나 항상 왼쪽에 목록의 항목을에서 정렬 합니다.
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
언어 지침
String 데이터 형식
문자열을 연결 하는 앰퍼샌드를 사용 (&) 합니다.
MsgBox("hello" & vbCrLf & "goodbye")
루프에에서 문자열을 추가 하려면 사용 하는 StringBuilder 개체입니다.
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
이벤트 처리기의 완화된 대리자
명시적으로 인수 (개체와 EventArgs) 이벤트 처리기로 정규화 하면 안 됩니다.(예를 들어, 보낸 개체로, EventArgs e) 이벤트에 전달 된 이벤트 인수를 사용 하지 않는 경우 완화 된 대리자를 하 고 코드에서 이벤트 인수를 둡니다.
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 한 예외 처리를 사용합니다 하는 경우 문 사용
On Error Goto를 사용하지 마십시오.
IsNot 키워드 사용
사용 된 IsNot 키워드 대신 Not...Is Nothing.
New 키워드
간단한 인스턴스를 사용 합니다.예를 들어, 다음 구문을 사용 합니다.
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"}
이벤트 처리
AddHandler 대신 Handles를 사용합니다.
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 (null)를 호출 하기 전에 RaiseEvent 메서드.RaiseEvent는 이벤트를 발생시키기 전에 Nothing을 확인합니다.
공유 멤버 사용
인스턴스 변수에서 호출하지 않고 클래스 이름을 사용하여 Shared 멤버를 호출합니다.
XML 리터럴 사용
XML 리터럴을 사용하면 XML을 사용할 할 때 가장 일반적으로 수행하는 로드, 쿼리, 변환과 같은 작업을 간단하게 만들 수 있습니다.XML을 개발할 때 다음 지침을 따릅니다.
XML API를 직접 호출하는 대신 XML 리터럴을 사용하여 XML 문서 및 조각을 만듭니다.
파일 또는 프로젝트 수준에서 XML 네임스페이스를 가져와서 XML 리터럴의 성능 최적화를 활용합니다.
XML 축 속성을 사용하여 XML 문서의 요소 및 특성에 액세스합니다.
Add 메서드와 같은 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"
Pascal을 사용 하 여 익명 형식의 속성 이름이 올바르게 대문자로 되어 있는지 확인 하는 쿼리 요소에 대 한 이름을 제공 합니다. 대/소문자 구분:
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