Conventions de codage Visual Basic
Microsoft développe des exemples et de la documentation qui suivent les instructions de cette rubrique. Si vous suivez les mêmes conventions de codage, vous pouvez bénéficier des avantages suivants :
Votre code aura une apparence cohérente, afin que les lecteurs puissent mieux se concentrer sur le contenu, et non sur la mise en page.
Les lecteurs comprennent votre code plus rapidement, car ils peuvent faire des hypothèses basées sur l’expérience précédente.
Vous pouvez copier, modifier et gérer le code plus facilement.
Vous veillez à ce que votre code illustre les « bonnes pratiques » pour Visual Basic.
Conventions d'affectation de noms
Pour plus d’informations sur les instructions de nommage, consultez la rubrique Instructions d’affectation de noms.
N’utilisez pas « My » ou « my » dans le cadre d’un nom de variable. Cette pratique crée une confusion avec les objets
My
.Vous n’avez pas besoin de modifier les noms des objets dans le code généré automatiquement pour qu’ils correspondent aux instructions.
Conventions de disposition
Insérez des tabulations sous forme d’espaces et utilisez la mise en retrait intelligente avec des retraits à quatre espaces.
Utilisez pretty listing (reformatage) du code pour reformater votre code dans l’éditeur de code. Pour plus d’informations, consultez Options, Éditeur de texte, Basic (Visual Basic).
Écrivez une seule instruction par ligne. N’utilisez pas le caractère séparateur de ligne Visual Basic (
:
).Évitez d’utiliser le caractère de continuation de ligne explicite «
_
» en faveur de la continuation de ligne implicite partout où le langage le permet.Écrivez une seule déclaration par ligne.
Si pretty listing (reformatage) du code ne met pas automatiquement en forme les lignes de continuation, mettez en retrait manuellement les lignes de continuation d’un taquet de tabulation. Toutefois, alignez toujours les éléments à gauche dans une liste.
a As Integer, b As Integer
Ajoutez au moins une ligne blanche entre les définitions des méthodes et les définitions des propriétés.
Conventions de commentaires
Placez le commentaire sur une ligne séparée, pas à la fin d'une ligne de code.
Commencez le texte de commentaire avec une lettre majuscule et terminez le texte de commentaire par un point.
Insérez un espace entre le délimiteur de commentaire (
'
) et le texte du commentaire, comme illustré dans l'exemple suivant.' Here is a comment.
N’entourez pas les commentaires de blocs mis en forme d’astérisques.
Structure du programme
Lorsque vous utilisez la méthode
Main
, utilisez la construction par défaut pour les nouvelles applications console et utilisezMy
pour les arguments de ligne de commande.Sub Main() For Each argument As String In My.Application.CommandLineArgs ' Add code here to use the string variable. Next End Sub
Directives du langage
String, type de données
Utilisez une interpolation de chaîne pour concaténer les chaînes courtes, comme illustré dans le code suivant.
MsgBox($"hello{vbCrLf}goodbye")
Pour ajouter des chaînes dans des boucles, utilisez l’objet StringBuilder.
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Délégués détendus dans les gestionnaires d’événements
Ne qualifiez pas explicitement les arguments (Object
et EventArgs
) aux gestionnaires d’événements. Si vous n’utilisez pas les arguments d’événement passés à un événement (par exemple, sender As Object
, e As EventArgs
), utilisez des délégués détendus et laissez les arguments d’événement dans votre code :
Public Sub Form1_Load() Handles Form1.Load
End Sub
Type de données non signé
- Utilisez
Integer
plutôt que des types non signés, sauf s’ils sont nécessaires.
Tableaux
Utilisez la syntaxe concise lorsque vous initialisez des tableaux sur la ligne de déclaration. Par exemple, utilisez la syntaxe suivante.
Dim letters1 As String() = {"a", "b", "c"}
N’utilisez pas la syntaxe suivante.
Dim letters2() As String = New String() {"a", "b", "c"}
Placez le désignateur de tableau sur le type, et non sur la variable. Par exemple, utilisez la syntaxe suivante :
Dim letters4 As String() = {"a", "b", "c"}
N’utilisez pas la syntaxe suivante :
Dim letters3() As String = {"a", "b", "c"}
Utilisez la syntaxe { } lorsque vous déclarez et initialisez des tableaux de types de données de base. Par exemple, utilisez la syntaxe suivante :
Dim letters5 As String() = {"a", "b", "c"}
N’utilisez pas la syntaxe suivante :
Dim letters6(2) As String letters6(0) = "a" letters6(1) = "b" letters6(2) = "c"
Utiliser le mot clé With
Lorsque vous effectuez une série d’appels à un objet, envisagez d’utiliser le mot clé With
:
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
Utilisez l’option Essayer... et les instructions catch lorsque vous utilisez la gestion des exceptions
N’utilisez pas On Error Goto
.
Utiliser le mot clé IsNot
Utilisez ... IsNot Nothing
au lieu de Not ... Is Nothing
.
Mot clé New
Utilisez l’instanciation courte. Par exemple, utilisez la syntaxe suivante :
Dim employees As New List(Of String)
La ligne précédente équivaut à ceci :
Dim employees2 As List(Of String) = New List(Of String)
Utilisez des initialiseurs d’objets pour les nouveaux objets au lieu du constructeur sans paramètre :
Dim orderLog As New EventLog With { .Log = "Application", .Source = "Application Name", .MachineName = "Computer Name"}
Gestion des événements
Utilisez
Handles
plutôt queAddHandler
:Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click End Sub
Utilisez
AddressOf
et n’instanciez pas explicitement le délégué :Dim closeItem As New ToolStripMenuItem( "Close", Nothing, AddressOf ToolStripMenuItem1_Click) Me.MainMenuStrip.Items.Add(closeItem)
Lorsque vous définissez un événement, utilisez la syntaxe courte et laissez le compilateur définir le délégué :
Public Event SampleEvent As EventHandler(Of SampleEventArgs) ' or Public Event SampleEvent(ByVal source As Object, ByVal e As SampleEventArgs)
Ne vérifiez pas si un événement est
Nothing
(null) avant d’appeler la méthodeRaiseEvent
.RaiseEvent
vérifieNothing
avant de déclencher l’événement.
Utilisation des membres partagés
Appelez les membres Shared
en utilisant le nom de la classe, et non à partir d’une variable instance.
Utilisation des littéraux XML
Les littéraux XML simplifient les tâches les plus courantes que vous rencontrez lorsque vous utilisez du code XML (par exemple, charger, interroger et transformer). Lorsque vous développez avec le langage XML, suivez ces instructions :
Utilisez des littéraux XML pour créer des documents et des fragments XML au lieu d’appeler directement des API XML.
Importez des espaces de noms XML au niveau du fichier ou du projet pour tirer parti des optimisations des performances des littéraux XML.
Utilisez les propriétés de l’axe XML pour accéder aux éléments et aux attributs d’un document XML.
Utilisez des expressions incorporées pour inclure des valeurs et créer du code XML à partir de valeurs existantes au lieu d’utiliser des appels d’API tels que la méthode
Add
: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
Requêtes LINQ
Utilisez des noms explicites pour les variables de requête :
Dim seattleCustomers = From cust In customers Where cust.City = "Seattle"
Utilisez des alias pour vous assurer que les noms de propriétés des types anonymes sont correctement écrits en majuscules à l'aide de la casse Pascal :
Dim customerOrders = From customer In customers Join order In orders On customer.CustomerID Equals order.CustomerID Select Customer = customer, Order = order
Renommez les propriétés lorsque les noms de propriétés dans le résultat sont ambigus. Par exemple, si votre requête retourne un nom de client et un ID de commande, renommez-les au lieu de les laisser comme
Name
etID
dans le résultat :Dim customerOrders2 = From cust In customers Join ord In orders On cust.CustomerID Equals ord.CustomerID Select CustomerName = cust.Name, OrderID = ord.ID
Utilisez l'inférence de type dans la déclaration des variables de requête et des variables de portée :
Dim customerList = From cust In customers
Alignez les clauses de requête sous l’instruction
From
:Dim newyorkCustomers = From cust In customers Where cust.City = "New York" Select cust.LastName, cust.CompanyName
Utilisez les clauses
Where
avant les autres clauses de requête pour garantir que les clauses de requête ultérieures opèrent sur l’ensemble de données réduit et filtré :Dim newyorkCustomers2 = From cust In customers Where cust.City = "New York" Order By cust.LastName
Utilisez la
Join
clause pour définir explicitement une opération de jointure au lieu d’utiliser la clauseWhere
pour définir implicitement une opération de jointure :Dim customerList2 = From cust In customers Join order In orders On cust.CustomerID Equals order.CustomerID Select cust, order