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ówMy
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
zamiastAddHandler
:Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click End Sub
Użyj elementu
AddressOf
i 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 maNothing
wartość (null).RaiseEvent
Nothing
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
iID
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