Соглашения о написании кода в 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
Правила языка
Тип данных String
Для сцепления строк используйте амперсанд (&).
MsgBox("hello" & vbCrLf & "goodbye")
Для добавления строк в цикле используйте объект StringBuilder.
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Ослабленные делегаты в обработчиках событий
Явно указать аргументы (объект) и EventArgs обработчикам событий.Если не используются аргументы событий, передаваемые событие (например, отправитель как объект, как EventArgs), используйте ослабленные делегаты и пропускайте аргументы событий в коде.
Public Sub Form1_Load() Handles Form1.Load
End Sub
Беззнаковый тип данных
- Используйте Integer вместо беззнаковых типов, за исключением случаев, когда они требуются.
Массивы
Используйте короткий синтаксис при инициализации массивов линии объявления.Например, используйте следующий синтаксис.
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"
Используйте ключевое слово With
После этого ряда вызовов одного объекта, рассмотрите возможность использования ключевого слова With:
With orderLog
.Log = "Application"
.Source = "Application Name"
.MachineName = "Computer Name"
End With
Используйте Try… Catch и операторы Using при использовании обработку исключений
Не используйте On Error Goto.
Используйте ключевое слово IsNot
Используйте ключевое слово IsNot вместо Not...Is Nothing.
Ключевое слово 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"}
Обработка событий
Используйте 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 перед тем, как он вызовет событие.
Использование общих членов
Вызывайте Shared члены с помощью имени класса, а не переменной экземпляра.
Использование 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
Запросы 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