Compartir a través de


Convenciones de código de Visual Basic

Microsoft desarrolla los ejemplos y la documentación que siguen las instrucciones de este tema. Si sigue las mismas convenciones de codificación, puede aprovechar las ventajas siguientes:

  • Su código tendrá un aspecto coherente, de modo que los lectores pueden centrar mejor su atención en el contenido y no en el diseño.

  • Los lectores entienden el código con más rapidez, ya que pueden hacer suposiciones en función de su experiencia anterior.

  • Puede copiar, cambiar y mantener el código con mayor facilidad.

  • Ayuda a garantiza que el código muestra “procedimientos recomendados” para Visual Basic.

Convenciones de nomenclatura

  • Para obtener información sobre las directrices de nomenclatura, vea el tema Guidelines for Names.

  • No utilice "Mi" o "mi" como parte de un nombre de variable. Esta práctica crea confusión con los objetos My.

  • No tiene que cambiar los nombres de objetos en código generado automáticamente para que se ajusten a las directrices.

Convenciones de diseño

  • Inserte tabulaciones como espacios y use la sangría inteligente con sangrías de cuatro espacios.

  • Utilice Lista descriptiva (nuevo formato) de código para volver a aplicar formato al código en el Editor de código. Para obtener más información, vea Opciones, editor de texto, básico (Visual Basic).

  • Utilice sólo una instrucción por línea. No utilice el carácter separador de línea de Visual Basic (:).

  • Evite utilizar el carácter de continuación de línea explícito "_" a favor de la continuación de línea implícita siempre que el lenguaje lo permita.

  • Utilice sólo una declaración por línea.

  • Si Lista descriptiva (nuevo formato) de código no da formato a las líneas de continuación automáticamente, aplique manualmente una tabulación a las líneas de continuación para aplicar la sangría. Sin embargo, alinee siempre los elementos de una lista a la izquierda.

    a As Integer,
    b As Integer
    
  • Agregue al menos una línea en blanco entre el método y las definiciones de propiedad.

Convenciones de los comentarios

  • Ponga los comentarios en una línea independiente, no al final de una línea de código.

  • Comience el texto del comentario con una letra en mayúscula y finalice el texto del comentario con un punto.

  • Inserte un espacio entre el delimitador de comentario (') y el texto del comentario.

    ' Here is a comment.
    
  • No incluya bloques de asterisco con formato alrededor de los comentarios.

Estructura del programa

  • Al usar el método Main, utilice la construcción predeterminada para las nuevas aplicaciones de consola y utilice My para los argumentos de la línea de comandos.

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

Convenciones de lenguaje

String (Tipo de datos)

  • Para concatenar cadenas, use una Y comercial (&).

    MsgBox("hello" & vbCrLf & "goodbye")
    
  • Para anexar cadenas en bucles, utilice el objeto StringBuilder.

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

Delegados flexibles en controladores de eventos

No califique explícitamente los argumentos (Object y EventArgs) como controladores de eventos. Si no usa los argumentos de evento que se pasan a un evento (por ejemplo, el remitente como objeto como EventArgs), utilice los delegados flexibles y no incluya argumentos de evento en el código:

Public Sub Form1_Load() Handles Form1.Load
End Sub

Tipo de datos sin signo

  • Utilice Integer en lugar de tipos sin signo, excepto cuando sean necesarios.

Matrices

  • Conviene usar la sintaxis breve al inicializar matrices en la línea de declaración. Por ejemplo, puede usar la siguiente sintaxis.

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

    No use la sintaxis siguiente.

    Dim letters2() As String = New String() {"a", "b", "c"}
    
  • Sitúe el designador en el tipo, no en la variable. Por ejemplo, puede usar la siguiente sintaxis:

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

    No use la sintaxis siguiente:

    Dim letters3() As String = {"a", "b", "c"}
    
  • Utilice la sintaxis {} al declarar e inicializar matrices de tipos de datos básicos. Por ejemplo, puede usar la siguiente sintaxis:

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

    No use la sintaxis siguiente:

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

Utilice la palabra clave With

Cuando realice una serie de llamadas a un objeto, considere la posibilidad de utilizar la palabra clave With.

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

Use las instrucciones Try...Catch y Using cuando use el Control de excepciones

No utilice On Error Goto.

Utilizar la palabra clave IsNot

Use la palabra clave IsNot en lugar de Not...Is Nothing.

New (Palabra clave)

  • Usar la creación de instancias abreviadas. Por ejemplo, puede usar la siguiente sintaxis:

    Dim employees As New List(Of String)
    

    La línea anterior es equivalente a esto:

    Dim employees2 As List(Of String) = New List(Of String)
    
  • Utilice los inicializadores de objeto para los nuevos objetos en lugar del constructor sin parámetros:

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

Control de eventos

  • Utilice Handles en lugar de AddHandler.

    Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click
    End Sub
    
  • Utilice AddressOf y no cree instancias explícitas del delegado:

    Dim closeItem As New ToolStripMenuItem( 
        "Close", Nothing, AddressOf ToolStripMenuItem1_Click)
    Me.MainMenuStrip.Items.Add(closeItem)
    
  • Cuando defina un evento, utilice la sintaxis corta y permita que el compilador defina el delegado:

    Public Event SampleEvent As EventHandler(Of SampleEventArgs)
    ' or 
    Public Event SampleEvent(ByVal source As Object, 
                              ByVal e As SampleEventArgs)
    
  • No compruebe si un evento es Nothing (null) antes de llamar al método RaiseEvent. RaiseEvent comprueba Nothing antes de generar el evento.

Utilizar miembros compartidos

Llame a los miembros Shared utilizando el nombre de clase y no una variable de instancia.

Utilizar literales XML

Los literales XML simplifican las tareas más comunes con las que se encuentra al trabajar con XML (por ejemplo, cargar, consultar y transformar). Al desarrollar con XML, siga estas instrucciones:

  • Utilice literales XML para crear documentos y fragmentos XML en lugar de llamar directamente a API XML.

  • Importe espacios de nombres XML al archivo o nivel de proyecto para sacar partido de la optimización del rendimiento para los literales XML.

  • Utilice las propiedades de eje XML para tener acceso a elementos y atributos en un documento XML.

  • Utilice expresiones incrustadas para incluir valores y crear XML a partir de valores existentes en lugar de utilizar llamadas API como el método 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
    

Consultas LINQ

  • Utilice nombres descriptivos para las variables de consulta:

    Dim seattleCustomers = From cust In customers 
                           Where cust.City = "Seattle"
    
  • Proporcione nombres para elementos en una consulta para asegurarse de que los nombres de propiedad de tipos anónimos se escriben con las mayúsculas correctas mediante la grafía Pascal:

    Dim customerOrders = From customer In customers 
                         Join order In orders 
                           On customer.CustomerID Equals order.CustomerID 
                         Select Customer = customer, Order = order
    
  • Cambie el nombre de las propiedades cuando los nombres de propiedad en el resultado puedan ser ambiguos. Por ejemplo, si la consulta devuelve un nombre de cliente y un Id. de pedido, cámbieles el nombre en lugar de dejarlos como Name e ID en el resultado:

    Dim customerOrders2 = From cust In customers 
                          Join ord In orders
                            On cust.CustomerID Equals ord.CustomerID 
                          Select CustomerName = cust.Name, 
                                 OrderID = ord.ID
    
  • Utilice la inferencia de tipos en la declaración de variables de consulta y variables de intervalo:

    Dim customerList = From cust In customers
    
  • Alinee las cláusulas de consulta bajo la instrucción From:

    Dim newyorkCustomers = From cust In customers 
                           Where cust.City = "New York"  
                           Select cust.LastName, cust.CompanyName
    
  • Utilice las cláusulas Where antes de otras cláusulas de consulta de forma que las cláusulas de consulta posteriores operen en el conjunto de datos filtrado:

    Dim newyorkCustomers2 = From cust In customers 
                            Where cust.City = "New York" 
                            Order By cust.LastName
    
  • Utilice la cláusula Join para definir explícitamente una operación de unión en lugar de utilizar la cláusula Where para definir implícitamente una operación de unión:

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

Vea también

Otros recursos

Instrucciones de codificación segura