Udostępnij za pośrednictwem


Visual Basic — Konwencje kodowania

Firma Microsoft opracowuje przykłady i dokumentację, które są zgodne z wytycznymi w tym temacie. Jeśli przestrzegasz tych samych konwencji kodowania, możesz uzyskać następujące korzyści:

  • Twój kod będzie miał spójny wygląd, dzięki czemu czytelnicy mogą lepiej skupić się na zawartości, a nie na układzie.

  • Czytelnicy szybciej rozumieją twój kod, ponieważ mogą założeń opierać się na poprzednim środowisku.

  • Możesz łatwiej kopiować, zmieniać i obsługiwać kod.

  • Pomagasz upewnić się, że kod demonstruje "najlepsze rozwiązania" dla języka Visual Basic.

Konwencje nazewnictwa

  • Aby uzyskać informacje na temat wytycznych dotyczących nazewnictwa, zobacz Temat Wytyczne dotyczące nazewnictwa.

  • Nie używaj wartości "My" ani "my" jako części nazwy zmiennej. Ta praktyka powoduje zamieszanie z My obiektami.

  • Nie trzeba zmieniać nazw obiektów w kodzie generowanym automatycznie w celu dopasowania ich do wytycznych.

Konwencje układu

  • Wstaw karty jako spacje i używaj inteligentnych wcięcia z wcięciami z czterema spacjami.

  • Użyj pozycji Pretty listing (ponowne formatowanie) kodu , aby ponownie sformatować kod w edytorze kodu. Aby uzyskać więcej informacji, zobacz Opcje, Edytor tekstu, Basic (Visual Basic).

  • Użyj tylko jednej instrukcji na wiersz. Nie używaj znaku separatora wiersza języka Visual Basic (:).

  • Unikaj używania jawnego znaku kontynuacji wiersza "_" na rzecz niejawnej kontynuacji wiersza wszędzie tam, gdzie język go zezwala.

  • Użyj tylko jednej deklaracji na wiersz.

  • Jeśli pozycja Pretty listing (ponowne formatowanie) kodu nie formatuje wierszy kontynuacji automatycznie, ręcznie wcięcie wierszy kontynuacji po jednym zatrzymaniu karty. Jednak zawsze wyrównywanie elementów w lewo na liście.

    a As Integer,  
    b As Integer  
    
  • Dodaj co najmniej jedną pustą linię między definicjami metody i właściwości.

Konwencje komentowania

  • Umieść komentarze w osobnym wierszu zamiast na końcu wiersza kodu.

  • Rozpocznij tekst komentarza z wielką literą i zakończ tekst komentarza kropką.

  • Wstaw jedną spację między ogranicznikiem komentarza (') i tekstem komentarza.

    ' Here is a comment.
    
  • Nie otaczaj komentarzy sformatowanymi blokami gwiazdki.

Struktura programu

  • W przypadku użycia Main metody użyj domyślnej konstrukcji dla nowych aplikacji konsoli i użyj argumentów My wiersza polecenia.

    Sub Main()
      For Each argument As String In My.Application.CommandLineArgs
        ' Add code here to use the string variable.
      Next
    End Sub
    

Wytyczne dotyczące języka

Typ danych ciągu

  • Użyj interpolacji ciągów, aby połączyć krótkie ciągi, jak pokazano w poniższym kodzie.

    MsgBox($"hello{vbCrLf}goodbye")
    
  • Aby dołączyć ciągi w pętlach, użyj StringBuilder obiektu .

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

Zrelaksowani delegaci w programie obsługi zdarzeń

Nie należy jawnie kwalifikować argumentów (Object i EventArgs) do procedur obsługi zdarzeń. Jeśli nie używasz argumentów zdarzenia, które są przekazywane do zdarzenia (na przykład sender As Object, e As EventArgs), użyj zrelaksowanych delegatów i pozostaw argumenty zdarzeń w kodzie:

Public Sub Form1_Load() Handles Form1.Load
End Sub

Typ danych bez znaku

  • Używaj Integer zamiast niepodpisanych typów, z wyjątkiem przypadków, w których są one niezbędne.

Tablice

  • Użyj krótkiej składni podczas inicjowania tablic w wierszu deklaracji. Na przykład użyj następującej składni.

    Dim letters1 As String() = {"a", "b", "c"}
    

    Nie używaj następującej składni.

    Dim letters2() As String = New String() {"a", "b", "c"}
    
  • Umieść projektator tablicy na typie, a nie na zmiennej. Na przykład użyj następującej składni:

    Dim letters4 As String() = {"a", "b", "c"}
    

    Nie używaj następującej składni:

    Dim letters3() As String = {"a", "b", "c"}
    
  • Użyj składni { } podczas deklarowania i inicjowania tablic podstawowych typów danych. Na przykład użyj następującej składni:

    Dim letters5 As String() = {"a", "b", "c"}
    

    Nie używaj następującej składni:

    Dim letters6(2) As String
    letters6(0) = "a"
    letters6(1) = "b"
    letters6(2) = "c"
    

Używanie słowa kluczowego With

Podczas wykonywania serii wywołań do jednego obiektu rozważ użycie słowa kluczowego With :

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

Użyj narzędzia Wypróbuj... Catch and Using Statements when you use Exception Handling

Nie używaj polecenia On Error Goto.

Używanie słowa kluczowego IsNot

Użyj ... IsNot Nothing zamiast Not ... Is Nothing.

Nowe słowo kluczowe

  • Użyj krótkiego wystąpienia. Na przykład użyj następującej składni:

    Dim employees As New List(Of String)
    

    Poprzedni wiersz jest odpowiednikiem tego:

    Dim employees2 As List(Of String) = New List(Of String)
    
  • Użyj inicjatorów obiektów dla nowych obiektów zamiast konstruktora bez parametrów:

    Dim orderLog As New EventLog With { 
        .Log = "Application", 
        .Source = "Application Name", 
        .MachineName = "Computer Name"}
    

Obsługa zdarzeń

  • Użyj Handles zamiast AddHandler:

    Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click
    End Sub
    
  • Użyj elementu AddressOfi nie utwórz jawnego wystąpienia delegata:

    Dim closeItem As New ToolStripMenuItem( 
        "Close", Nothing, AddressOf ToolStripMenuItem1_Click)
    Me.MainMenuStrip.Items.Add(closeItem)
    
  • Podczas definiowania zdarzenia użyj krótkiej składni i pozwól kompilatorowi zdefiniować delegata:

    Public Event SampleEvent As EventHandler(Of SampleEventArgs)
    ' or
    Public Event SampleEvent(ByVal source As Object, 
                              ByVal e As SampleEventArgs)
    
  • Przed wywołaniem RaiseEvent metody nie należy sprawdzić, czy zdarzenie ma Nothing wartość (null). RaiseEventNothing sprawdza, czy zdarzenie jest wywoływane.

Korzystanie z udostępnionych elementów członkowskich

Wywołaj Shared elementy członkowskie przy użyciu nazwy klasy, a nie ze zmiennej wystąpienia.

Używanie literałów XML

Literały XML upraszczają typowe zadania występujące podczas pracy z plikiem XML (na przykład ładowanie, wykonywanie zapytań i przekształcanie). Podczas opracowywania za pomocą kodu XML postępuj zgodnie z następującymi wytycznymi:

  • Użyj literałów XML do tworzenia dokumentów XML i fragmentów zamiast bezpośredniego wywoływania interfejsów API XML.

  • Zaimportuj przestrzenie nazw XML na poziomie pliku lub projektu, aby skorzystać z optymalizacji wydajności literałów XML.

  • Użyj właściwości osi XML, aby uzyskać dostęp do elementów i atrybutów w dokumencie XML.

  • Użyj wyrażeń osadzonych, aby uwzględnić wartości i utworzyć kod XML na podstawie istniejących wartości zamiast używać wywołań interfejsu Add API, takich jak metoda:

    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
    

Zapytania LINQ

  • Użyj znaczących nazw zmiennych zapytania:

    Dim seattleCustomers = From cust In customers 
                           Where cust.City = "Seattle"
    
  • Podaj nazwy elementów w zapytaniu, aby upewnić się, że nazwy właściwości typów anonimowych są poprawnie wielkich liter przy użyciu liter Pascal:

    Dim customerOrders = From customer In customers 
                         Join order In orders 
                           On customer.CustomerID Equals order.CustomerID 
                         Select Customer = customer, Order = order
    
  • Zmień nazwę właściwości, gdy nazwy właściwości w wyniku będą niejednoznaczne. Jeśli na przykład zapytanie zwraca nazwę klienta i identyfikator zamówienia, zmień ich nazwę zamiast pozostawiać je jako Name i ID w wyniku:

    Dim customerOrders2 = From cust In customers 
                          Join ord In orders
                            On cust.CustomerID Equals ord.CustomerID 
                          Select CustomerName = cust.Name, 
                                 OrderID = ord.ID
    
  • Użyj wnioskowania typu w deklaracji zmiennych zapytania i zmiennych zakresu:

    Dim customerList = From cust In customers
    
  • Wyrównaj klauzule zapytania w instrukcji From :

    Dim newyorkCustomers = From cust In customers 
                           Where cust.City = "New York" 
                           Select cust.LastName, cust.CompanyName
    
  • Użyj Where klauzul przed innymi klauzulami zapytania, aby późniejsze klauzule zapytania działały na filtrowanych zestawach danych:

    Dim newyorkCustomers2 = From cust In customers 
                            Where cust.City = "New York" 
                            Order By cust.LastName
    
  • Użyj klauzuli Join , aby jawnie zdefiniować operację sprzężenia zamiast używać Where klauzuli , aby niejawnie zdefiniować operację sprzężenia:

    Dim customerList2 = From cust In customers 
                        Join order In orders 
                          On cust.CustomerID Equals order.CustomerID 
                        Select cust, order
    

Zobacz też