Поделиться через


Соглашения о написании кода в Visual Basic

Microsoft начинается примеров и документации, соответствующих рекомендации в данном разделе.Если действуют те же соглашения о написании кода, можно получить следующие преимущества:

  • Код будет выглядеть согласованной, чтобы читатели могли повышению фокус на содержимом, а не на макете.

  • Читатели понять код быстрее, так как они могут сделать предположения, основанные на опыте.

  • Можно скопировать, изменение и продолжить код проще.

  • Позволяет убедиться, что код демонстрирует "рекомендации" для Visual Basic.

Соглашения об именах

  • Дополнительные сведения о правила именования см. в разделе Guidelines for Names.

  • Не используйте "Mу" или "mу" как часть имени переменной.Этот метод создает требуется с объектами My.

  • Не следует изменять имена объектов в автоматически созданном коде, чтобы привести их в соответствие с правилами.

Cоглашения о расположении

  • Вставьте пробелы, символы табуляции в качестве и использования разумные отступы с отступами 4 - пробела.Для получения дополнительной информации см. Практическое руководство. Настройка параметров табуляции и отступов.

  • Используйте Автоматическое форматирование кода, чтобы изменить код в редакторе кода.Дополнительные сведения см. в разделе "Параметры", "Текстовый редактор", Basic (Visual Basic).

  • Используйте только одну инструкцию в строке.Не используйте разделитель линии Visual Basic (:).

  • Избегайте использования точный символ "_" продолжения линии в пользу неявного продолжения линии везде, где он позволяет язык.

  • Используйте только одно объявление в строке.

  • Если Автоматическое форматирование кода не форматирует линии продолжения автоматически, вручную отступ линии продолжения одной позиции табуляции.Однако всегда выровнять элементы в списке.

    a As Integer,
    b As Integer
    
  • Добавьте по крайней мере одну пустую строку между определениями методов и свойств.

Соглашения о комментариях

  • Поместите комментарии в отдельной линии, а не в конце строки кода.

  • Запустите текст комментария с прописной буквы, и текст комментария конца с точкой.

  • Вставьте один пробел между разделителем комментария (') и текстом комментария.

    ' Here is a comment.
    
  • Не окружите комментарии с форматированными блоками звездочек.

Структура программы

  • При использовании метода Main следует использовать конструкцию по умолчанию для новых консольных приложений и использовать My для аргументов командной строки.

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

Правила языка

h63fsef3.collapse_all(ru-ru,VS.110).gifТип данных String

  • Для сцепления строк используйте амперсанд (&).

    MsgBox("hello" & vbCrLf & "goodbye")
    
  • Для добавления строк в цикле используйте объект StringBuilder.

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

h63fsef3.collapse_all(ru-ru,VS.110).gifОслабленные делегаты в обработчиках событий

Явно указать аргументы (объект) и EventArgs обработчикам событий.Если не используются аргументы событий, передаваемые событие (например, отправитель как объект, как EventArgs), используйте ослабленные делегаты и пропускайте аргументы событий в коде.

Public Sub Form1_Load() Handles Form1.Load
End Sub

h63fsef3.collapse_all(ru-ru,VS.110).gifБеззнаковый тип данных

  • Используйте Integer вместо беззнаковых типов, за исключением случаев, когда они требуются.

h63fsef3.collapse_all(ru-ru,VS.110).gifМассивы

  • Используйте короткий синтаксис при инициализации массивов линии объявления.Например, используйте следующий синтаксис.

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

    Не используйте следующий синтаксис.

    Dim letters2() As String = New String() {"a", "b", "c"}
    
  • Поместите указатель на тип массива, а не на переменную.Например, используйте следующий синтаксис:

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

    Не используйте следующий синтаксис:

    Dim letters3() As String = {"a", "b", "c"}
    
  • Используйте синтаксис {} при объявлении и инициализации массивов основных типов данных.Например, используйте следующий синтаксис:

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

    Не используйте следующий синтаксис:

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

h63fsef3.collapse_all(ru-ru,VS.110).gifИспользуйте ключевое слово With

После этого ряда вызовов одного объекта, рассмотрите возможность использования ключевого слова With:

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

h63fsef3.collapse_all(ru-ru,VS.110).gifИспользуйте Try… Catch и операторы Using при использовании обработку исключений

Не используйте On Error Goto.

h63fsef3.collapse_all(ru-ru,VS.110).gifИспользуйте ключевое слово IsNot

Используйте ключевое слово IsNot вместо Not...Is Nothing.

h63fsef3.collapse_all(ru-ru,VS.110).gifКлючевое слово New

  • Используйте короткий способ создания экземпляра.Например, используйте следующий синтаксис:

    Dim employees As New List(Of String)
    

    Предыдущая строка эквивалентна следующей:

    Dim employees2 As List(Of String) = New List(Of String)
    
  • Используйте инициализаторы объектов для новых объектов вместо конструкторов без параметров:

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

h63fsef3.collapse_all(ru-ru,VS.110).gifОбработка событий

  • Используйте Handles вместо AddHandler.

    Private Sub ToolStripMenuItem1_Click() Handles ToolStripMenuItem1.Click
    End Sub
    
  • Используйте AddressOf и не создавайте экземпляр делегата явным образом:

    Dim closeItem As New ToolStripMenuItem( 
        "Close", Nothing, AddressOf ToolStripMenuItem1_Click)
    Me.MainMenuStrip.Items.Add(closeItem)
    
  • При определении события, используйте короткий синтаксис и позвольте компилятору определить делегат:

    Public Event SampleEvent As EventHandler(Of SampleEventArgs)
    ' or
    Public Event SampleEvent(ByVal source As Object, 
                              ByVal e As SampleEventArgs)
    
  • Проверьте, не событие Nothing (NULL) перед вызовом метода RaiseEvent.Метод RaiseEvent проверит наличие Nothing перед тем, как он вызовет событие.

h63fsef3.collapse_all(ru-ru,VS.110).gifИспользование общих членов

Вызывайте Shared члены с помощью имени класса, а не переменной экземпляра.

h63fsef3.collapse_all(ru-ru,VS.110).gifИспользование XML-литералов

Литералы XML упрощают большинство общих задач, с которыми можно столкнуться при работе с XML (например, загрузка, запрос и преобразование).При разработке с использованием XML, следуйте данным принципам:

  • Используйте литералы XML для создания XML-документов и фрагментов вместо прямого вызова интерфейсов API.

  • Импортируйте пространство имен XML в файл или на уровень проекта, чтобы воспользоваться преимуществами оптимизации производительности для XML-литералов.

  • Используйте свойства оси XML для обращения к элементам и атрибутам в XML-документе.

  • Используйте внедренные выражения для включения значений и создания XML из существующих значений вместо использования вызовов API, таких как метод 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
    

h63fsef3.collapse_all(ru-ru,VS.110).gifЗапросы LINQ

  • Используйте значимые имена для переменных запроса:

    Dim seattleCustomers = From cust In customers 
                           Where cust.City = "Seattle"
    
  • Введите имена элементов в запросе, чтобы убедиться, что имена свойств анонимных типов правильно писаны прописными буквами, используя стиль pascal.

    Dim customerOrders = From customer In customers 
                         Join order In orders 
                           On customer.CustomerID Equals order.CustomerID 
                         Select Customer = customer, Order = order
    
  • Переименуйте свойства, если имена свойств в результате могут быть неоднозначными.Например, если запрос возвращает имя клиента и идентификатор заказа, переименуйте их не оставляйте их имена в результате в виде Name и ID:

    Dim customerOrders2 = From cust In customers 
                          Join ord In orders
                            On cust.CustomerID Equals ord.CustomerID 
                          Select CustomerName = cust.Name, 
                                 OrderID = ord.ID
    
  • Используйте определение типа в объявлении переменных запроса и переменных диапазона:

    Dim customerList = From cust In customers
    
  • Выровняйте предложения запроса в операторе From:

    Dim newyorkCustomers = From cust In customers 
                           Where cust.City = "New York" 
                           Select cust.LastName, cust.CompanyName
    
  • Используйте предложения Where перед другими предложениями запроса, что более поздние предложения запроса приведутся при использовании отфильтрованного набора данных:

    Dim newyorkCustomers2 = From cust In customers 
                            Where cust.City = "New York" 
                            Order By cust.LastName
    
  • Используйте предложение Join для явного определения операцию соединения вместо использования предложения Where для неявного определения операцию соединения:

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

См. также

Другие ресурсы

Правила написания безопасного кода