Visual Basic-kodningskonventioner
Microsoft utvecklar exempel och dokumentation som följer riktlinjerna i det här avsnittet. Om du följer samma kodningskonventioner kan du få följande fördelar:
Koden kommer att ha ett konsekvent utseende, så att läsarna bättre kan fokusera på innehåll, inte layout.
Läsarna förstår koden snabbare eftersom de kan göra antaganden baserat på tidigare erfarenheter.
Du kan kopiera, ändra och underhålla koden enklare.
Du hjälper till att se till att koden visar "metodtips" för Visual Basic.
Namngivning
Information om namngivningsriktlinjer finns i avsnittet Namngivningsriktlinjer .
Använd inte "My" eller "my" som en del av ett variabelnamn. Den här metoden skapar förvirring med objekten
My
.Du behöver inte ändra namnen på objekt i automatiskt genererad kod för att få dem att passa riktlinjerna.
Layoutkonventioner
Infoga flikar som blanksteg och använd smart indrag med indrag med fyra blanksteg.
Använd Pretty listing (formatera om) kod för att formatera om koden i kodredigeraren. Mer information finns i Alternativ, Textredigerare, Grundläggande (Visual Basic).
Använd endast en instruktion per rad. Använd inte linjeavgränsartecknet Visual Basic (
:
).Undvik att använda det explicita radfortsättningstecknet "
_
" till förmån för implicit radfortsättning där språket tillåter det.Använd endast en deklaration per rad.
Om ganska lista (omformatering) av kod inte formaterar fortsättningsrader automatiskt, drar du in fortsättningsrader manuellt ett tabbstopp. Men alltid vänsterjustera objekt i en lista.
a As Integer, b As Integer
Lägg till minst en tom rad mellan metod- och egenskapsdefinitioner.
Kommentera konventioner
Placera kommentarer på en separat rad i stället för i slutet av en kodrad.
Starta kommentarstexten med en versal bokstav och avsluta kommentarstexten med en punkt.
Infoga ett blanksteg mellan kommentars avgränsare (
'
) och kommentarstexten.' Here is a comment.
Omge inte kommentarer med formaterade block av asterisker.
Programstruktur
När du använder
Main
metoden använder du standardkonstruktionen för nya konsolprogram och använderMy
för kommandoradsargument.Sub Main() For Each argument As String In My.Application.CommandLineArgs ' Add code here to use the string variable. Next End Sub
Språkriktlinjer
Strängdatatyp
Använd stränginterpolation för att sammanfoga korta strängar, enligt följande kod.
MsgBox($"hello{vbCrLf}goodbye")
Om du vill lägga till strängar i loopar använder du objektet StringBuilder .
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Avslappnade ombud i händelsehanterare
Kvalificera inte uttryckligen argumenten (Object
och EventArgs
) till händelsehanterare. Om du inte använder de händelseargument som skickas till en händelse (till exempel sender As Object
, e As EventArgs
), använder du avslappnade ombud och utelämnar händelseargumenten i koden:
Public Sub Form1_Load() Handles Form1.Load
End Sub
Osignerad datatyp
- Använd
Integer
i stället för osignerade typer, förutom där de är nödvändiga.
Matriser
Använd den korta syntaxen när du initierar matriser på deklarationsraden. Använd till exempel följande syntax.
Dim letters1 As String() = {"a", "b", "c"}
Använd inte följande syntax.
Dim letters2() As String = New String() {"a", "b", "c"}
Placera matrisdesignatorn på typen, inte på variabeln. Använd till exempel följande syntax:
Dim letters4 As String() = {"a", "b", "c"}
Använd inte följande syntax:
Dim letters3() As String = {"a", "b", "c"}
Använd syntaxen { } när du deklarerar och initierar matriser med grundläggande datatyper. Använd till exempel följande syntax:
Dim letters5 As String() = {"a", "b", "c"}
Använd inte följande syntax:
Dim letters6(2) As String letters6(0) = "a" letters6(1) = "b" letters6(2) = "c"
Använda nyckelordet Med
När du gör en serie anrop till ett objekt bör du överväga att använda nyckelordet With
:
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
Använd prova... Catch and Using-instruktioner när du använder undantagshantering
Använd inte On Error Goto
.
Använd nyckelordet IsNot
Använd ... IsNot Nothing
i stället för Not ... Is Nothing
.
Nytt nyckelord
Använd kort instansiering. Använd till exempel följande syntax:
Dim employees As New List(Of String)
Föregående rad motsvarar följande:
Dim employees2 As List(Of String) = New List(Of String)
Använd objektinitierare för nya objekt i stället för den parameterlösa konstruktorn:
Dim orderLog As New EventLog With { .Log = "Application", .Source = "Application Name", .MachineName = "Computer Name"}
Händelsehantering
Använd
Handles
i ställetAddHandler
för :Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click End Sub
Använd
AddressOf
och instansiera inte ombudet explicit:Dim closeItem As New ToolStripMenuItem( "Close", Nothing, AddressOf ToolStripMenuItem1_Click) Me.MainMenuStrip.Items.Add(closeItem)
När du definierar en händelse använder du den korta syntaxen och låter kompilatorn definiera ombudet:
Public Event SampleEvent As EventHandler(Of SampleEventArgs) ' or Public Event SampleEvent(ByVal source As Object, ByVal e As SampleEventArgs)
Kontrollera inte om en händelse är
Nothing
(null) innan du anroparRaiseEvent
metoden.RaiseEvent
sökerNothing
efter innan händelsen aktiveras.
Använda delade medlemmar
Anropa Shared
medlemmar med hjälp av klassnamnet, inte från en instansvariabel.
Använda XML-literaler
XML-literaler förenklar de vanligaste uppgifterna som du stöter på när du arbetar med XML (till exempel belastning, fråga och transformering). När du utvecklar med XML följer du dessa riktlinjer:
Använd XML-literaler för att skapa XML-dokument och fragment i stället för att anropa XML-API:er direkt.
Importera XML-namnområden på fil- eller projektnivå för att dra nytta av prestandaoptimeringarna för XML-literaler.
Använd XML-axelns egenskaper för att komma åt element och attribut i ett XML-dokument.
Använd inbäddade uttryck för att inkludera värden och för att skapa XML från befintliga värden i stället för att använda API-anrop, till exempel
Add
metoden: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-frågor
Använd meningsfulla namn för frågevariabler:
Dim seattleCustomers = From cust In customers Where cust.City = "Seattle"
Ange namn på element i en fråga för att se till att egenskapsnamnen för anonyma typer är korrekt versaler med Pascal-hölje:
Dim customerOrders = From customer In customers Join order In orders On customer.CustomerID Equals order.CustomerID Select Customer = customer, Order = order
Byt namn på egenskaper när egenskapsnamnen i resultatet skulle vara tvetydiga. Om din fråga till exempel returnerar ett kundnamn och ett order-ID byter du namn på dem i stället för att lämna dem som
Name
ochID
i resultatet:Dim customerOrders2 = From cust In customers Join ord In orders On cust.CustomerID Equals ord.CustomerID Select CustomerName = cust.Name, OrderID = ord.ID
Använd typinferens i deklarationen av frågevariabler och intervallvariabler:
Dim customerList = From cust In customers
Justera frågesatser under instruktionen
From
:Dim newyorkCustomers = From cust In customers Where cust.City = "New York" Select cust.LastName, cust.CompanyName
Använd
Where
satser före andra frågesatser så att senare frågesatser fungerar på den filtrerade datauppsättningen:Dim newyorkCustomers2 = From cust In customers Where cust.City = "New York" Order By cust.LastName
Join
Använd -satsen för att explicit definiera en kopplingsåtgärd i stället för att användaWhere
-satsen för att implicit definiera en kopplingsåtgärd:Dim customerList2 = From cust In customers Join order In orders On cust.CustomerID Equals order.CustomerID Select cust, order