Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Корпорация Майкрософт разрабатывает примеры и документацию, которые соответствуют рекомендациям, приведенным в этом разделе. Если вы следуйте тем же соглашениям по кодированию, вы можете получить следующие преимущества:
Код будет иметь согласованный вид, чтобы читатели могли лучше сосредоточиться на содержимом, а не макете.
Читатели более быстро понимают код, так как они могут делать предположения на основе предыдущего опыта.
Вы можете копировать, изменять и поддерживать код проще.
Вы помогаете гарантировать, что ваш код демонстрирует "лучшие практики" для Visual Basic.
Соглашения об именах
Дополнительные сведения об именовании см. в разделе "Рекомендации по именованию ".
Не используйте "My" или "my" в составе имени переменной. Эта практика создает путаницу с объектами
My.Вам не нужно изменять имена объектов в автоматическом коде, чтобы они соответствовали рекомендациям.
Правила оформления
Вставляйте вкладки в виде пробелов и используйте интеллектуальные отступы с отступами в четыре пробела.
Используйте красивое форматирование кода, чтобы переформатировать его в редакторе кода. Дополнительные сведения см. в разделе "Параметры", "Текстовый редактор", "Базовый" (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
Рекомендации по языку
Тип данных строки
Для сцепления коротких строк рекомендуется использовать интерполяцию строк, как показано в следующем коде.
MsgBox($"hello{vbCrLf}goodbye")Чтобы добавить строки в циклы, используйте StringBuilder объект.
Dim longString As New System.Text.StringBuilder For count As Integer = 1 To 1000 longString.Append(count) Next
Расслабленные делегаты в обработчиках событий
Не указывайте явно аргументы (Object и EventArgs) для обработчиков событий. Если вы не используете аргументы, передаваемые в событие (например, sender As Object, e As 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 Nothing вместо Not ... Is Nothing.
Новое ключевое слово
Используйте краткую инициализацию. Например, используйте следующий синтаксис:
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)Не проверяйте, имеет ли событие значение
NothingNULL перед вызовомRaiseEventметода.RaiseEventпроверяет наличиеNothingперед вызовом события.
Использование общих членов
Вызывайте Shared членов по имени класса, а не с помощью переменной экземпляра.
Использование XML-литералов
XML-литералы упрощают наиболее распространенные задачи, которые возникают при работе с XML (например, загрузка, запрос и преобразование). При разработке с использованием XML выполните следующие рекомендации.
Используйте XML-литералы для создания XML-документов и фрагментов вместо вызова API-интерфейсов XML напрямую.
Импортируйте пространства имен 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.LastNameJoinИспользуйте предложение для явного определения операции соединения вместо использованияWhereпредложения для неявного определения операции соединения:Dim customerList2 = From cust In customers Join order In orders On cust.CustomerID Equals order.CustomerID Select cust, order