다음을 통해 공유


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
    

언어 지침

h63fsef3.collapse_all(ko-kr,VS.110).gifString 데이터 형식

  • 문자열을 연결 하는 앰퍼샌드를 사용 (&) 합니다.

    MsgBox("hello" & vbCrLf & "goodbye")
    
  • 루프에에서 문자열을 추가 하려면 사용 하는 StringBuilder 개체입니다.

    Dim longString As New System.Text.StringBuilder
    For count As Integer = 1 To 1000
      longString.Append(count)
    Next
    

h63fsef3.collapse_all(ko-kr,VS.110).gif이벤트 처리기의 완화된 대리자

명시적으로 인수 (개체와 EventArgs) 이벤트 처리기로 정규화 하면 안 됩니다.(예를 들어, 보낸 개체로, EventArgs e) 이벤트에 전달 된 이벤트 인수를 사용 하지 않는 경우 완화 된 대리자를 하 고 코드에서 이벤트 인수를 둡니다.

Public Sub Form1_Load() Handles Form1.Load
End Sub

h63fsef3.collapse_all(ko-kr,VS.110).gif부호 없는 데이터 형식

  • 사용 Integer 가 필요한 경우를 제외 하면 부호 없는 형식으로 대신 합니다.

h63fsef3.collapse_all(ko-kr,VS.110).gif배열

  • 선언 줄에 배열을 초기화할 때는 간단한 구문을 사용 합니다.예를 들어, 다음 구문을 사용 합니다.

    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"
    

h63fsef3.collapse_all(ko-kr,VS.110).gifWith 키워드 사용

일련의 한 개체로 호출을 만들 때 사용 하는 것은 With 키워드:

With orderLog
  .Log = "Application"
  .Source = "Application Name"
  .MachineName = "Computer Name"
End With

h63fsef3.collapse_all(ko-kr,VS.110).gifTry을 사용 하는 중...Catch 한 예외 처리를 사용합니다 하는 경우 문 사용

On Error Goto를 사용하지 마십시오.

h63fsef3.collapse_all(ko-kr,VS.110).gifIsNot 키워드 사용

사용 된 IsNot 키워드 대신 Not...Is Nothing.

h63fsef3.collapse_all(ko-kr,VS.110).gifNew 키워드

  • 간단한 인스턴스를 사용 합니다.예를 들어, 다음 구문을 사용 합니다.

    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"}
    

h63fsef3.collapse_all(ko-kr,VS.110).gif이벤트 처리

  • 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을 확인합니다.

h63fsef3.collapse_all(ko-kr,VS.110).gif공유 멤버 사용

인스턴스 변수에서 호출하지 않고 클래스 이름을 사용하여 Shared 멤버를 호출합니다.

h63fsef3.collapse_all(ko-kr,VS.110).gifXML 리터럴 사용

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
    

h63fsef3.collapse_all(ko-kr,VS.110).gifLINQ 쿼리

  • 쿼리 변수에 의미 있는 이름을 사용합니다.

    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
    

참고 항목

기타 리소스

보안 코딩 지침