Codierungskonventionen in Visual BasicVisual Basic Coding Conventions

Microsoft entwickelt Beispiele und Dokumentation, die den Richtlinien in diesem Thema folgen.Microsoft develops samples and documentation that follow the guidelines in this topic. Wenn Sie dieselben Codierungskonventionen beachten, erhalten Sie möglicherweise folgende Vorteile:If you follow the same coding conventions, you may gain the following benefits:

  • Der Code erhält eine konsistente Gestaltung, damit sich die Leser mehr auf den Inhalt und nicht auf das Layout konzentrieren.Your code will have a consistent look, so that readers can better focus on content, not layout.

  • Leser verstehen den Code schneller, da sie Rückschlüsse aus früheren Erfahrungen ziehen können.Readers understand your code more quickly because they can make assumptions based on previous experience.

  • Sie können den Code kopieren, ändern und leichter pflegen.You can copy, change, and maintain the code more easily.

  • Sie können sicherstellen, dass der Code die "empfohlenen Vorgehensweisen" für Visual Basic berücksichtigt.You help ensure that your code demonstrates "best practices" for Visual Basic.

NamenskonventionenNaming Conventions

  • Informationen zu Benennungs Richtlinien finden Sie im Thema Benennungs Richtlinien .For information about naming guidelines, see Naming Guidelines topic.

  • Verwenden Sie nicht "My" oder "my" als Teil eines Variablennamens.Do not use "My" or "my" as part of a variable name. Diese Vorgehensweise führt zu Verwechslungen mit den My-Objekten.This practice creates confusion with the My objects.

  • Sie müssen die Namen von Objekten in automatisch generiertem Code nicht ändern, um sie an die Richtlinien anzupassen.You do not have to change the names of objects in auto-generated code to make them fit the guidelines.

LayoutkonventionenLayout Conventions

  • Fügen Sie Registerkarten als Leerzeichen ein, und verwenden Sie intelligenten Einzug mit vier Leerzeichen.Insert tabs as spaces, and use smart indenting with four-space indents.

  • Verwenden Sie eine ganz Zahl Auflistung (Neuformatierung) von Code , um den Code im Code-Editor neu zu formatieren.Use Pretty listing (reformatting) of code to reformat your code in the code editor. Weitere Informationen finden Sie unter Optionen, Text-Editor, Basic (Visual Basic).For more information, see Options, Text Editor, Basic (Visual Basic).

  • Verwenden Sie pro Zeile nur eine Anweisung.Use only one statement per line. Verwenden Sie nicht das Visual Basic-Zeilentrennzeichen (:).Don't use the Visual Basic line separator character (:).

  • Vermeiden Sie, das explizite Zeilenfortsetzungszeichen "" zugunsten der impliziten Zeilenfortsetzung, wenn die Sprache dies ermöglicht.Avoid using the explicit line continuation character "" in favor of implicit line continuation wherever the language allows it.

  • Verwenden Sie pro Zeile nur eine Deklaration.Use only one declaration per line.

  • Wenn durch eine Auflistung (Neuformatierung) des Codes keine Fortsetzungs Zeilen automatisch formatiert werden, werden Fortsetzungs Zeilen manuell mit einem Tabstopp Einzug eingelesen.If Pretty listing (reformatting) of code doesn't format continuation lines automatically, manually indent continuation lines one tab stop. In einer Liste werden jedoch die Elemente immer links ausgerichtet.However, always left-align items in a list.

    a As Integer,  
    b As Integer  
    
  • Fügen Sie zwischen Methoden- und Eigenschaftendefinitionen mindestens eine Leerzeile ein.Add at least one blank line between method and property definitions.

Konventionen für KommentareCommenting Conventions

  • Fügen Sie den Kommentar in einer eigenen Zeile und nicht am Ende einer Codezeile ein.Put comments on a separate line instead of at the end of a line of code.

  • Beginnen Sie den Kommentartext mit einem Großbuchstaben, und beenden Sie ihn mit einem Punkt.Start comment text with an uppercase letter, and end comment text with a period.

  • Fügen Sie ein Leerzeichen zwischen dem Kommentartrennzeichen (') und dem Kommentartext ein.Insert one space between the comment delimiter (') and the comment text.

    ' Here is a comment.
    
  • Erstellen Sie keine formatierten Blöcke von Sternchen, die die Kommentare umgeben.Do not surround comments with formatted blocks of asterisks.

ProgrammstrukturProgram Structure

  • Wenn Sie die Main-Methode verwenden, verwenden Sie das Standardkonstrukt für neue Konsolenanwendungen, und verwenden Sie My für Befehlszeilenargumente.When you use the Main method, use the default construct for new console applications, and use My for command-line arguments.

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

SprachrichtlinienLanguage Guidelines

String-DatentypString Data Type

  • Verwenden Sie die Zeichenfolgeninterpolation, um wie im folgenden Code gezeigt kurze Zeichenfolgen zu verketten.Use string interpolation to concatenate short strings, as shown in the following code.

    MsgBox($"hello{vbCrLf}goodbye")
    
  • Verwenden Sie das StringBuilder-Objekt, um Zeichenfolgen in Schleifen anzuhängen.To append strings in loops, use the StringBuilder object.

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

Weniger strenge Delegaten in EreignishandlernRelaxed Delegates in Event Handlers

Um Ereignishandler zu vermeiden, qualifizieren Sie die Argumente (Object und EventArgs) nicht explizit.Do not explicitly qualify the arguments (Object and EventArgs) to event handlers. Wenn Sie nicht die Ereignisargumente verwenden, die an ein Ereignis übergeben werden (z. B. Sender als Objekt, "e" als EventArgs), verwenden Sie weniger strenge Delegaten, und lassen Sie die Ereignisargumente im Code aus:If you are not using the event arguments that are passed to an event (for example, sender as Object, e as EventArgs), use relaxed delegates, and leave out the event arguments in your code:

Public Sub Form1_Load() Handles Form1.Load
End Sub

Datentyp ohne VorzeichenUnsigned Data Type

  • Verwenden Sie Integer anstelle von Typen ohne Vorzeichen, wenn sie nicht notwendig sind.Use Integer rather than unsigned types, except where they are necessary.

ArraysArrays

  • Verwenden Sie die kurze Syntax, wenn Sie Arrays in der Deklarationszeile initialisieren.Use the short syntax when you initialize arrays on the declaration line. Sie können z. B. folgende Syntax verwenden.For example, use the following syntax.

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

    Verwenden Sie nicht die folgende Syntax.Do not use the following syntax.

    Dim letters2() As String = New String() {"a", "b", "c"}
    
  • Legen Sie den Arraybezeichner im Typ und nicht in der Variablen ab.Put the array designator on the type, not on the variable. Sie können z. B. folgende Syntax verwenden:For example, use the following syntax:

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

    Verwenden Sie nicht die folgende Syntax:Do not use the following syntax:

    Dim letters3() As String = {"a", "b", "c"}
    
  • Verwenden Sie die { }-Syntax, wenn Sie Arrays aus grundlegenden Datentypen deklarieren und initialisieren.Use the { } syntax when you declare and initialize arrays of basic data types. Sie können z. B. folgende Syntax verwenden:For example, use the following syntax:

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

    Verwenden Sie nicht die folgende Syntax:Do not use the following syntax:

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

Verwenden des with-SchlüsselwortsUse the With Keyword

Wenn Sie eine Reihe von Aufrufen eines Objekts ausführen, sollten Sie erwägen, das With-Schlüsselwort zu verwenden:When you make a series of calls to one object, consider using the With keyword:

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

Verwenden Sie try-catch-Anweisungen zur Ausnahmebehandlung.Use the Try...Catch and Using Statements when you use Exception Handling

Verwenden Sie nicht On Error Goto.Do not use On Error Goto.

Verwenden des IsNot-SchlüsselwortsUse the IsNot Keyword

Verwenden Sie das Schlüsselwort IsNot statt Not...Is Nothing.Use the IsNot keyword instead of Not...Is Nothing.

New-SchlüsselwortNew Keyword

  • Verwenden Sie die kurze Instanziierung.Use short instantiation. Sie können z. B. folgende Syntax verwenden:For example, use the following syntax:

    Dim employees As New List(Of String)
    

    Die vorangehende Zeile entspricht der Folgenden:The preceding line is equivalent to this:

    Dim employees2 As List(Of String) = New List(Of String)
    
  • Verwenden Sie für neue Objekte Objektinitialisierer anstelle des parameterlosen Konstruktors:Use object initializers for new objects instead of the parameterless constructor:

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

EreignisbehandlungEvent Handling

  • Verwenden Sie eher Handles als AddHandler:Use Handles rather than AddHandler:

    Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click
    End Sub
    
  • Verwenden Sie AddressOf, und instanziieren Sie den Delegaten nicht explizit:Use AddressOf, and do not instantiate the delegate explicitly:

    Dim closeItem As New ToolStripMenuItem( 
        "Close", Nothing, AddressOf ToolStripMenuItem1_Click)
    Me.MainMenuStrip.Items.Add(closeItem)
    
  • Wenn Sie ein Ereignis definieren, verwenden Sie die kurze Syntax, und lassen Sie den Delegaten vom Compiler definieren:When you define an event, use the short syntax, and let the compiler define the delegate:

    Public Event SampleEvent As EventHandler(Of SampleEventArgs)
    ' or
    Public Event SampleEvent(ByVal source As Object, 
                              ByVal e As SampleEventArgs)
    
  • Überprüfen Sie nicht, ob ein Ereignis Nothing (NULL) ist, bevor Sie die RaiseEvent-Methode aufrufen.Do not verify whether an event is Nothing (null) before you call the RaiseEvent method. Die RaiseEvent-Methode führt vor dem Auslösen des Ereignisses eine Überprüfung auf den Wert Nothing durch.RaiseEvent checks for Nothing before it raises the event.

Verwenden von Shared-MembernUsing Shared Members

Rufen Sie Shared-Member über den Klassennamen auf, nicht von einer Instanzvariablen aus.Call Shared members by using the class name, not from an instance variable.

Verwenden von XML-LiteralenUse XML Literals

XML-Literale vereinfachen allgemeine Aufgaben bei der Arbeit mit XML (z. B. Laden, Abfragen und Transformieren).XML literals simplify the most common tasks that you encounter when you work with XML (for example, load, query, and transform). Beachten Sie bei der Entwicklung mit XML die folgenden Richtlinien:When you develop with XML, follow these guidelines:

  • Verwenden Sie zum Erstellen von XML-Dokumenten und –Fragmenten XML-Literale, anstatt die XML-APIs direkt aufzurufen.Use XML literals to create XML documents and fragments instead of calling XML APIs directly.

  • Importieren Sie XML-Namespaces auf Datei- oder Projektebene, um die Leistungsoptimierung für XML-Literale zu verwenden.Import XML namespaces at the file or project level to take advantage of the performance optimizations for XML literals.

  • Verwenden Sie die XML-Achseneigenschaften, um auf Elemente und Attribute in einem XML-Dokument zuzugreifen.Use the XML axis properties to access elements and attributes in an XML document.

  • Verwenden Sie eingebettete Ausdrücke, um Werte einzuschließen und XML aus vorhandenen Werten zu erstellen, anstatt API-Aufrufe wie die Add-Methode zu nutzen:Use embedded expressions to include values and to create XML from existing values instead of using API calls such as the Add method:

    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-AbfragenLINQ Queries

  • Verwenden Sie aussagekräftige Namen für Abfragevariablen:Use meaningful names for query variables:

    Dim seattleCustomers = From cust In customers 
                           Where cust.City = "Seattle"
    
  • Geben Sie Aliasnamen für Elemente in einer Abfrage an, um eine korrekte Großschreibung von Eigenschaftennamen anonymer Typen in Pascal-Schreibweise sicherzustellen:Provide names for elements in a query to make sure that property names of anonymous types are correctly capitalized using Pascal casing:

    Dim customerOrders = From customer In customers 
                         Join order In orders 
                           On customer.CustomerID Equals order.CustomerID 
                         Select Customer = customer, Order = order
    
  • Benennen Sie Eigenschaften um, wenn die Eigenschaftennamen im Ergebnis nicht eindeutig sind.Rename properties when the property names in the result would be ambiguous. Wenn die Abfrage beispielsweise einen Kundennamen und eine Auftrags-ID zurückgibt, sollten Sie diese im Ergebnis umbenennen, anstatt Name und ID zu übernehmen:For example, if your query returns a customer name and an order ID, rename them instead of leaving them as Name and ID in the result:

    Dim customerOrders2 = From cust In customers 
                          Join ord In orders
                            On cust.CustomerID Equals ord.CustomerID 
                          Select CustomerName = cust.Name, 
                                 OrderID = ord.ID
    
  • Verwenden Sie den Typrückschluss in der Deklaration von Abfragevariablen und Bereichsvariablen:Use type inference in the declaration of query variables and range variables:

    Dim customerList = From cust In customers
    
  • Richten Sie Abfrageklauseln unter der From-Anweisung aus:Align query clauses under the From statement:

    Dim newyorkCustomers = From cust In customers 
                           Where cust.City = "New York" 
                           Select cust.LastName, cust.CompanyName
    
  • Verwenden Sie vor anderen Abfrageklauseln Where-Klauseln, sodass die nachfolgenden Abfrageklauseln für den reduzierten, gefilterten Datensatz ausgeführt werden:Use Where clauses before other query clauses so that later query clauses operate on the filtered set of data:

    Dim newyorkCustomers2 = From cust In customers 
                            Where cust.City = "New York" 
                            Order By cust.LastName
    
  • Verwenden Sie zum expliziten Definieren eines Verbindungsvorgangs die Join-Klausel anstelle der Where-Klausel, bei der ein Verbindungsvorgang implizit definiert wird:Use the Join clause to explicitly define a join operation instead of using the Where clause to implicitly define a join operation:

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

Siehe auchSee also