다음을 통해 공유


Visual Basic 코딩 규칙

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
    

이벤트 핸들러에서의 느슨한 대리자

인수(ObjectEventArgs)를 이벤트 처리기에 명시적으로 한정하지 마세요. 이벤트에 전달되는 이벤트 인수(예 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를 반환하는 경우, 결과에서 NameID로 남겨두지 말고 이름을 바꾸십시오.

    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
    

참고하십시오