Convenções codificação Visual Basic
Essas diretrizes são usadas pela Microsoft para desenvolver Exemplos e documentação.Especificação da linguagem Visual Basic não define um padrão de codificação.
Convenções de codificação criar uma aparência consistente para o código, para que leitores podem 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 fazem suposições com base na experiência anterior.
Convenções tornar copiar, alterar e manter o código mais fácil.
Convenções demostram o uso do Visual Basic "práticas recomendadas".
Discussão
Convenções de nomenclatura
Diretrizes de nomes são abordadas em Diretrizes de Design para desenvolvimento bibliotecas de classe.
Não é necessário alterar o nome de objetos criados por ferramentas de designer do Visual Studio para torná-los a atender as diretrizes.
Use namespace qualificações em vez de adicionar instruções Imports.Se um espaço para nome for importado por padrão em um projeto, não é necessário que qualificar totalmente o código porque ele será executado não qualificado com o IntelliSense quando copiado e colado.Quando a quebra de longas linhas de código para torná-los mais fáceis de ler, nomes qualificados podem ser interrompidos após o "." Por exemplo:
Dim collection As System.Diagnostics. _ InstanceDataCollectionCollection
Não use "Meu" ou "Meu" sistema autônomo parte de um nome de variável.Isso cria confusão com o My objetos.
Convenções de layout
Um mercadoria layout usa formatação para enfatizar a estrutura do código e facilita a leitura do código.
Use o recurso de listagem bonita ao código de formato com sistema autônomo configurações padrão (SMART recuando 4 recuos de caractere, gravação guias sistema autônomo espaços).Para obter mais informações, consulte Específico do VB, Basic, editor de texto, caixa de diálogo Options.
Use apenas uma demonstrativo por linha.Não use o caractere de continuação Visual Basic (:).
Use somente uma declaração por linha.
Se bem a listagem não formata linhas de continuação, recue linhas de continuação de uma parada de tabulação.
Adicione pelo menos uma linha em branco entre definições de método e propriedade.
Convenções de comentários
Não use os comentários no participante de uma linha de código.Colocar comentários em uma linha separada.
Iniciar o texto do comentário com uma letra maiúscula.
Finalize 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.
Não crie blocos formatados de asteriscos ao redor de 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 argumentos de linha de comando.
Sub Main() For Each argument As String In My.Application.CommandLineArgs ' Add code here to use the string variable. Next End Sub
Diretrizes de linguagem
Tipo de dados de sequência de caracteres
Usar & concatenar seqüências:
MsgBox("hello" & vbCrLf & "goodbye")
Para acrescentar seqüências de caracteres em loops, use o StringBuilder objeto:
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Inferência de Tipo
Aproveite as vantagens de inferência de tipos de variáveis locais:
Public Sub GetQuery()
Dim filterValue = "London"
Dim query = From customer In customers _
Where customer.Country = filterValue
End Sub
Delegados relaxados em manipuladores de eventos
Usar delegados relaxados e deixar os argumentos de evento se você não estiver usando os argumentos do 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 é precioso.
Matrizes
Use a sintaxe abreviada durante a inicialização de arrays na linha de declaração:
Dim letters1() As String = {"a", "b", "c"}
Em vez de isso:
Dim letters2() As String = New String() {"a", "b", "c"}
Coloca o designador de matriz na variável, não em tipo:
Dim letters3() As String = {"a", "b", "c"}
Em vez de isso:
Dim letters4 As String() = {"a", "b", "c"}
Use a sintaxe {} quando declarar e inicializar matrizes de tipos de dados básica:
Dim letters5() As String = {"a", "b", "c"}
Em vez de isso:
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 a With palavra-chave:
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
Usar inferência de tipos de variáveis de loop em para ou para cada instruções
Permita inferência de tipos de tipos determinar o tipo da variável de intervalo de loop.
Veja a seguir um exemplo de uso de inferência de tipos de tipos em um For demonstrativo:
For count = 0 To 2
MsgBox(names(count))
Next
Veja a seguir um exemplo de uso de inferência de tipos de tipos em um For Each demonstrativo:
For Each name In names
MsgBox(name)
Next
Usar o Try... Catch e usando instruções de manipulação de exceção
Não use On Error Goto.
Para manipular exceções, use um Try...Catch demonstrativo:
Dim conn As New SqlConnection("connection string") Try Conn.Open() Catch ex As SqlException Finally Conn.Close() End Try
The Using demonstrativo combina um Try...Catch demonstrativo com uma telefonar para o Dispose método e simplifica o código. Se você estiver usando um Try...Catch demonstrativo e o código apenas no Finally bloco é uma telefonar 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 IsNot
Use o IsNot palavra-chave em preferência a Not...Is Nothing.
Use o AndAlso e OrElse Keywords
Para evitar exceções e aumentar o desempenho ignorando código desnecessário, 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
Instâncias padrão de formulários
Use Form1.ShowDialog em vez de My.Forms.Form1.ShowDialog.
Keyword NEW
Use instanciação curta:
Dim employees As New List(Of String)
A linha precedente é equivalente a esta:
Dim employees2 As List(Of String) = New List(Of String)
Use os inicializadores de objeto para novos objetos, em vez do construtor sem 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 instanciar o 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 define o delegado:
Public Event WhatHappened(ByVal source As Object, _ ByVal e As WhatHappenedEventArgs)
Não verificar se um evento é Nothing (nulo) antes de ligar o RaiseEvent método. RaiseEvent procura Nothing antes que ele gera o evento.
Usando membros compartilhados
De telefonarShared membros usando o nome de classe, não a partir de uma variável da ocorrência.
Use a função CaixaDeMensagem
Use MsgBox em vez de MessageBox.Show ou Console.WriteLine. Em ambientes que não oferecem suporte a MsgBox função, sistema autônomo o Silverlight, use uma alternativa apropriada.
Uso do Namespace My
Use My recursos em preferência a biblioteca de classes do .NET estrutura ou do Visual Basic em time de execução biblioteca. Para obter mais informações, consulte Objetos (Visual Basic).
Use literais XML
Literais XML simplificam as tarefas mais comuns encontrados ao trabalhar com XML (por exemplo, carga, consulta e transformação).Quando você desenvolve com XML, siga estas diretrizes:
Use literais XML para criar documentos XML e fragmentos em vez de chamar XML APIs diretamente.
Importe os namespaces XML no nível de arquivo ou projeto para usufruir as otimizações de desempenho para literais XML.
Use as propriedades de eixo para acessar os elementos e atributos em um documento XML.
Use expressões incorporadas para incluir valores e criar o XML de valores existentes em vez de usar a API chama, sistema autônomo a Add mé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
Consultas LINQ
Use nomes significativos para variáveis de consulta:
Dim seattleCustomers = From cust In customers _ Where cust.City = "Seattle"
Alias de elementos em uma consulta para certificar-se de que os nomes de propriedades de tipos anônimo 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 poderiam ser ambíguos.Por exemplo, se sua consulta retorna um cliente, nome e uma ID de ordem, em vez de deixá-los sistema autônomo Name e ID no resultado, renomeá-las:
Dim customerOrders2 = From cust In customers _ Join ord In orders _ On cust.CustomerID Equals ord.CustomerID _ Select CustomerName = cust.Name, _ OrderID = ord.ID
Use inferência de tipos de tipos na declaração de variáveis de consulta e variáveis de alcance:
Dim customerList = From cust In customers
Alinhar 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 posterior cláusulas de consulta operam em reduzido, filtrado o conjunto de dados:
Dim newyorkCustomers2 = From cust In customers _ Where cust.City = "New York" _ Select cust.LastName, cust.CompanyName
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 Visual Basic em tempo de execução biblioteca Members
Use a biblioteca de time de execução do Visual Basic em preferência a biblioteca de classes do .NET estrutura.
Diretrizes para Exemplos
Geral
Siga as diretrizes de design em Diretrizes de design para desenvolvedores de biblioteca de classes.
Especifique o aviso e o título de MsgBox chamadas.
Use arquivos de recurso quando apropriado.
Use Option Strict On, em cada arquivo ou sistema autônomo uma configuração de projeto.
compilar com todos os avisos em.
Definir somente um Class, Structure, ou Interface em um arquivo.
Use o padrão de codificação para salvar arquivos.
Localização
Use o AutoSize propriedade onde for possível.
Não ocultar ou controles de sobreposição.
Não alinhe controles para criar uma frase.
Não crie seqüências de caracteres pela colocação de caracteres de outra seqüência de caracteres.
Use gráficos de cultura neutra.
Use apenas fontes Tahoma ou MS Sans Serif.
Acessibilidade
Usar cores do Sistema guia da caixa de diálogo Seletor de cores.
Use aceleradores para todos os menus, rótulos, botões e assim por diante.
conjunto controlar propriedades conforme descrito na tabela a seguir.
Propriedade |
Configuração |
---|---|
AccessibleDescription |
Uma descrição do controle. |
AccessibleName |
Um nome para o controle. |
AccessibleRole |
Padrão ou reiniciar esta propriedade se um controle tem outra função. |
TabIndex |
conjunto em uma ordem lógica. |
Texto |
Todos os controles clicáveis devem ter uma tecla de acesso do teclado (atalho). |
Tamanho da Fonte |
Padrão ou definido como 10 pontos ou maior |
Forecolor |
Padrão |
Backcolor |
Padrão |
BackgroundImage |
Padrão |
Segurança
Siga as orientações da Diretrizes para Codificação Segura.
Consulte também
Outros recursos
Diretrizes de Design para desenvolvimento bibliotecas de classe
Diretrizes para Codificação Segura
Date |
History |
Motivo |
---|---|---|
Julho de 2008 |
Diretrizes atualizadas para incluir novos recursos de linguagem, incluindo o LINQ, literais XML, inicializadores de objeto, inferência de tipos e delegados relaxados. |
Correção de bug do conteúdo. |