Convenções codificação Visual Basic
Essas diretrizes são usadas pela Microsoft para desenvolver amostras e documentação. A especificação de linguagem Visual Basic não define um padrão de codificação.
Codificação convenções criar uma aparência consistente para o código, para que os leitores possam se concentrar no conteúdo, não o layout.
Convenções permitem os leitores de compreender o código mais rapidamente, pois permite que eles façam suposições com base em experiências anteriores.
Convenções de tornam a copiar, alterar e manter o código mais fácil.
Convenções demonstram Visual Basic "best practices".
Discussão
Naming Conventions
Diretrizes de nomeação são abordadas em Diretrizes de Design para desenvolvimento bibliotecas de classe.
Não é necessário alterar o nome de objetos criados pelas ferramentas dedesigner de Visual Studiopara fazer com que ajuste as diretrizes.
Use as qualificações de namespace em vez de adicionar instruções de importações. Se um namespace foi importado por padrão em um projeto, você precisa qualificar totalmente o código, pois ele será executado não qualificado com IntelliSense quando copiado e colado. Quando você estiver dividindo longas linhas de código para torná-los mais fáceis de ler, os nomes qualificados podem ser interrompidos após o "." For example:
Dim collection As System.Diagnostics. InstanceDataCollectionCollection
Não use "Meu" ou "Meu" como parte de um nome de variável . Isso cria uma confusão com o My objetos.
Convenções de layout
Um bom layout usa formatação para enfatizar a estrutura do código e facilita a leitura do código.
Use o recurso de listagem bonita para formatar o código com as configurações padrão (inteligente recuos, recuos de 4 caracteres, tabulações como espaços de salvamento). For more information, see Específico do VB, Basic, o Editor de texto, caixa de diálogo Opções.
Use apenas uma demonstrativo por linha. Não use o caractere de continuação de linha de Visual Basic (:).
Use apenas uma declaração por linha.
Se a listagem bastante não não o formato continuação linhas, recuar continuação linhas uma parada de tabulação.
Adicionar pelo menos um em branco a linha entre as definições de método e propriedade .
Convenções de comentários
Não use os comentários no final de uma linha de código. Coloque os comentários em uma linhade separada.
Começa com uma letra maiúsculas o texto do comentário.
participante do comentário com um ponto.
Inserir um espaço entre os delimitadores de comentários (') e o texto do comentário.
' Here is a comment.
Fazer-se de não criar formatado blocos de asteriscos que cercam os comentários.
Estrutura de programa
Ao usar o Main método, use a construção do padrão para novos aplicativos de console e My para o comando -linha argumentos.
Sub Main() For Each argument As String In My.Application.CommandLineArgs ' Add code here to use the string variable. Next End Sub
Directrizes do idioma
String Data Type
Usar & para concatenar seqüências:
MsgBox("hello" & vbCrLf & "goodbye")
Para acrescentar seqüências de caracteres em loops, use o StringBuilderdeobjeto:
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Type Inference
Aproveite inferência de tipo para variáveis de locais:
Public Sub GetQuery()
Dim filterValue = "London"
Dim query = From customer In customers
Where customer.Country = filterValue
End Sub
Delegados relaxados nos manipuladores de eventos
Usar delegados relaxados e deixar os argumentos de evento se você não estiver usando os argumentos de evento em seu código:
Public Sub Form1_Load() Handles Form1.Load
End Sub
Tipo de dados não assinado
- Use Integer em vez de unsigned tipos, a menos que a memória é premium.
Arrays
Use a sintaxe abreviada durante a inicialização de arrays nalinhade declaração:
Dim letters1() As String = {"a", "b", "c"}
Em vez disso:
Dim letters2() As String = New String() {"a", "b", "c"}
Coloca o designador de matriz de variável, não no tipo:
Dim letters3() As String = {"a", "b", "c"}
Em vez disso:
Dim letters4 As String() = {"a", "b", "c"}
Use a sintaxe {} quando declarar e inicializar matrizes de tipos de dados básicos:
Dim letters5() As String = {"a", "b", "c"}
Em vez disso:
Dim letters6(2) As String letters6(0) = "a" letters6(1) = "b" letters6(2) = "c"
Use o com a palavra-chave
Ao usar uma série de chamadas para um objeto, considere o uso de With palavra-chave:
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
Use a Tipo para variáveis de Loop em para ou para cada instruções
Permitir digite inferência para determinar o tipo davariável de intervalode loop.
A seguir está um exemplo do uso de inferência de tipo em um For demonstrativo:
For count = 0 To 2
MsgBox(names(count))
Next
A seguir está um exemplo do uso de inferência de tipo em um For Each demonstrativo:
For Each name In names
MsgBox(name)
Next
Usar a instrução Try...Catch e usando as instruções para manipulação de exceção
Do not use On Error Goto.
Para manipular exceções, use um Try...Catchdedemonstrativo:
Dim conn As New SqlConnection("connection string") Try Conn.Open() Catch ex As SqlException Finally Conn.Close() End Try
O Usingdemonstrativo combina um Try...Catchademonstrativo com uma chamada para o Disposemétodo e simplifica o código. Se você estiver usando um Try...Catch demonstrativo e somente o código no Finally bloco é uma chamada para o Dispose método, use o Using demonstrativo em vez disso:
Using redPen As New Pen(color.Red) ' Insert code here. End Using
Use a palavra-chave de IsNot
Use o IsNotapalavra-chave em preferência a Not...Is Nothing.
Use o AndAlso e OrElse as de palavras-chave
Para evitar exceções e aumentar o desempenho ignorando desnecessário código, use AndAlso em vez de And e OrElse em vez de Or ao realizar comparações:
' Avoid a null reference exception. If the left side of the AndAlso
' operator is False, the right side is not evaluated and a null
' exception is not thrown.
If nullableObject IsNot Nothing AndAlso nullableObject = testValue Then
End If
' Avoid an unnecessary resource-intensive operation. If the left side
' of the OrElse operator is True, the right side is not evaluated and
' a resource-intensive operation is not called.
If testCondition OrElse ResourceIntensiveOperation() Then
End If
Padrão Instâncias de formulários
Use Form1.ShowDialog em vez de My.Forms.Form1.ShowDialog.
New Keyword
Use a instanciação curta:
Dim employees As New List(Of String)
A linha precedente é equivalente a isso:
Dim employees2 As List(Of String) = New List(Of String)
Use os inicializadores de objeto para novos objetos em vez do construtorsem parâmetros:
Dim orderLog As New EventLog With { .Log = "Application", .Source = "Application Name", .MachineName = "Computer Name"}
Manipulação de eventos
Use Handles em vez de AddHandler:
Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click End Sub
Use AddressOfe não criar uma instância do delegado explicitamente:
Dim closeItem As New ToolStripMenuItem( "Close", Nothing, AddressOf ToolStripMenuItem1_Click) Me.MainMenuStrip.Items.Add(closeItem)
Quando você define um evento, use a sintaxe abreviada e permitem que o compilador definem o delegado:
Public Event WhatHappened(ByVal source As Object, ByVal e As WhatHappenedEventArgs)
Não verificar se um evento é Nothing (null) antes de chamar o RaiseEvent método. RaiseEventverifica a existência de Nothing antes que ele gera o evento.
Usando membros compartilhados
Chame Shared membros usando o nome de classe , não a partir de uma variávelde instância.
Utilize a função MsgBox
Use MsgBox instead of MessageBox.Show or Console.WriteLine. Em ambientes que não oferecem suporte a MsgBox função, como o Silverlight, use uma alternativa apropriada.
Use o Namespace My
Use My recursos em preferência à.NET Framework classe biblioteca ou o Visual Basic-run-time biblioteca. For more information, see Objetos (Visual Basic).
Usar literais XML
LiteraisXML simplificam as tarefas mais comuns encontrados ao trabalhar com XML (por exemplo, carga, consultae transformação). Quando você desenvolve com XML, siga estas diretrizes:
Use literais XML para criardocumentos e fragmentosXML em vez de chamar diretamente o XML APIs.
Importe os namespaces XML no nível de arquivo ou projeto para aproveitar as otimizações de desempenho para os literais XML .
Use as propriedades de eixo XML para acessar os elementos e atributos em um documento XML .
Use expressões incorporadas para incluir valores e para criaroXML de valores existentes em vez de usar a API como chama o Addmétodo:
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 Queries
Use nomes descritivos para variáveis de consulta :
Dim seattleCustomers = From cust In customers Where cust.City = "Seattle"
Elementos de alias em uma consulta para certificar-se de que os nomes de propriedade de tipos anônimos corretamente forem capitalizados usando Pascal casing:
Dim customerOrders = From customer In customers Join order In orders On customer.CustomerID Equals order.CustomerID Select Customer = customer, Order = order
Renomear propriedades quando os nomes de propriedade no resultado seria ambíguos. Por exemplo, se sua consulta retorna o nome do cliente e uma identificação de ordem, em vez de deixá-los como Name e ID no resultado, renomeá-los:
Dim customerOrders2 = From cust In customers Join ord In orders On cust.CustomerID Equals ord.CustomerID Select CustomerName = cust.Name, OrderID = ord.ID
Use a inferência de tipo na declaração de variáveis de consulta e intervalo:
Dim customerList = From cust In customers
Alinhar as cláusulas de consulta sob o From demonstrativo:
Dim newyorkCustomers = From cust In customers Where cust.City = "New York" Select cust.LastName, cust.CompanyName
Use Where cláusulas antes de outras cláusulas de consulta para certificar-se de que as cláusulas de consulta posteriores operam reduzido, filtrado o conjunto de dados:
Dim newyorkCustomers2 = From cust In customers Where cust.City = "New York" Order By cust.LastName
Use o Join cláusula definir explicitamente uma unir em vez de usar o Where cláusula implicitamente definir uma unir:
Dim customerList2 = From cust In customers Join order In orders On cust.CustomerID Equals order.CustomerID Select cust, order
Use os membros da biblioteca deHora de Executar-Visual Basic
Use o Visual Basic-run-time biblioteca em preferência à.NET Framework classe biblioteca.
Consulte também
Conceitos
Diretrizes para Codificação Segura
Outros recursos
Diretrizes de Design para desenvolvimento bibliotecas de classe