1. «&» заменяет «+»
2. Именование переменных должно быть чувствительным к регистру, операторы должны быть хорошо организованы, а исходный код должен поддерживаться.
3. Пожалуйста, выработайте следующие хорошие привычки в отношении «соглашения об именах объектов».
4. В случае простых условий выбора используйте функцию IIf().
5. Попробуйте использовать Debug.Print для отладки.
6. При неоднократном изменении свойств объекта попробуйте использовать With....End With
7. Старайтесь использовать значки сообщений в MsgBox, чтобы программа была более стандартизированной. 8. По возможности используйте перечисления.
1. «&» заменяет «+»
Во многих языках программирования «+» используется для соединения строк, что может легко привести к неоднозначности. Хорошей практикой является использование «&» для объединения строк.
Неверно:
Уменьшить sMessage как строку
сСообщение = "1" + "2"
правильный:
Уменьшить sMessage как строку
sMessage = "1" и "2"
Примечание. После «&» ставится пробел.
2. Именование переменных должно быть чувствительным к регистру, операторы должны быть хорошо организованы, а исходный код должен поддерживаться.
Давайте сравним следующие два фрагмента кода:
Прочтите сложный код:
Уменьшить SNAME как строку
Тусклый NTURN как целое число
Если НТУРН = 0 Тогда
Если SNAME="вбеден" Тогда
Делайте, пока NTURN < 4
НТУРН = НТУРН + 1
Петля
Конец, если
Конец, если
Легко читаемый код:
Уменьшить имя в виде строки
Dim nTurn как целое число
Если nTurn = 0 Тогда
Если sName="вбеден" Тогда
Делай, пока nTurn < 4
нповорот = нповорот + 1
Петля
Конец, если
Конец, если
[вернуться к индексу]
3. Пожалуйста, выработайте следующие хорошие привычки в отношении «соглашения об именах объектов».
Рекомендуемые префиксы управления
Пример префикса типа управления
3D-панель pnl pnlGroup
Данные ADO и adoLiblio
Анимированная кнопка ani aniMailBox
Флажок chk chkReadOnly
Поле со списком, раскрывающийся список cbo cboEnglish
Командная кнопка cmd cmdExit
Общий диалог dlg dlgFileOpen
Коммуникации comFax
Элемент управления (используется в процедурах, когда конкретный тип неизвестен) ctr ctrCurrent
Данные datBiblio
Поле со списком, привязанное к данным
Сетка с привязкой к данным
Список с привязкой к данным
Комбинация данных dbc dbcAuthor
Сетка данных dgd dgdTitles
Список данных dbl dblPublisher
Повторитель данных
Выбор даты dtp dtpPublished
Окно списка каталогов dir dirSource
Окно списка дисков drv drvTarget
Окно списка файлов fil filSource
Плоская полоса прокрутки fsb fsbMove
Форма из frmEntry
Frame fraLanguage
Датчик гау гауСтатус
ГрафграграДоход
Сетка grd grdЦены
Иерархическая flexgrid flexOrders
Горизонтальная полоса прокрутки hsb hsbVolume
Изображение img imgIcon
Комбинация изображений imgcbo imgcboProduct
Список изображений ilsAllIcons
Метка lbl lblHelpMessage
Упрощенный флажок lwchk lwchkArchive
Легкий комбо-бокс lwcbo lwcboНемецкий
Упрощенная командная кнопка lwcmd lwcmdRemove
Легкая рама lwfra lwfraSaveOptions
Упрощенная горизонтальная полоса прокрутки lwhsb lwhsbVolume
Упрощенный список lwlst lwlstCostCenters
Упрощенная кнопка выбора lwopt lwoptIncomeLevel
Облегченное текстовое поле lwtxt lwoptStreet
Упрощенная вертикальная полоса прокрутки lwvsb lwvsbYear
Линия lin linVertical
Поле списка lst lstPolicyCodes
ListView lvw lvwHeadings
Сообщение MAPI mpm mpmSentMessage
Сеанс MAPI mps mpsSession
MCI mci mciВидео
Меню mnu mnuFileOpen
Просмотр месяца mvw mvwPeriod
MS Chart ch chSalesbyRegion
MS Flex сетка msg msgClients
MS Tab mst mstFirst
OLE-контейнер ole oleWorksheet
Кнопка выбора opt optGender
Изображение в коробке picVGA
Клип изображения clp clpToolbar
Прогрессбар prg prgLoadFile
Удаленные данные rd rdTitles
RichTextBox rtf rtfReport
Форма шп шпКруг
Ползунок sld sldScale
Прокрутить spn spnPages
СтатусБар стадатевремя
SysInfo sys sysMonitor
TabStrip вкладка tabOptions
Текстовое поле txt txtLastName
Таймер tmr tmrAlarm
Панель инструментов tlb tlbActions
TreeView tre treОрганизация
ВверхВниз
Вертикальная полоса прокрутки vsb vsbRate
-------------------------------------------------- ----------------------------------
Рекомендуемые префиксы для объектов доступа к данным (DAO)
Используйте следующие префиксы для обозначения объектов доступа к данным.
Пример префикса объекта базы данных
Контейнер conconОтчеты
БД базы данных dbAccounts
DBEngine dbe dbeJet
Документ docSalesReport
Поле fld fldAddress
Группа грп грпФинанс
Индекс ix idxAge
Параметр prm prmJobCode
QueryDef qry qrySalesByRegion
RecForecast записи набора записей
Отношение relEmployeeDept
TableDef подлежит уточнению для клиентов
Пользователь usr usrNew
Рабочая область wsp wspMine
-------------------------------------------------- ----------------------------------
Приложения часто используют множество элементов управления меню, и полезно иметь уникальный набор соглашений об именах для этих элементов управления. Помимо начального тега «mnu», префикс элемента управления меню должен быть расширен: для каждого уровня вложенности добавляется дополнительный префикс, помещающий окончательный заголовок меню в конец строки имени. В таблице ниже приведены некоторые примеры.
Рекомендуемые префиксы меню
Последовательность заголовков меню, имя обработчика меню
Открытие файла
Отправить файл по электронной почте mnuFileSendEmail
Отправка файла по факсу mnuFileSendFax
Символ формата mnuFormatCharacter
Содержание справки mnuHelpContents
При использовании этого соглашения об именах все члены определенной группы меню перечисляются один за другим в окне свойств Visual Basic. Более того, имена элементов управления меню четко указывают на пункты меню, которым они принадлежат.
Выберите префикс для других элементов управления
Элементы управления, не перечисленные выше, должны быть стандартизированы с использованием уникального двух- или трехсимвольного префикса для обеспечения единообразия. Используйте префиксы длиной более трех символов только тогда, когда требуется пояснение.
Соглашения об именах констант и переменных
Помимо объектов, константы и переменные также требуют правильных соглашений об именах. В этом разделе перечислены рекомендуемые соглашения для констант и переменных, поддерживаемых Visual Basic. и обсуждаются вопросы идентификации типов и диапазонов данных.
Переменные всегда должны определяться в минимально возможной области видимости. Глобальные (публичные) переменные могут привести к чрезвычайно сложным структурам состояний и усложнить понимание логики приложения. Глобальные переменные также усложняют повторное использование и обслуживание кода.
Переменные в Visual Basic могут иметь следующие области действия.
Позиция объявления области видимая позиция
«Частный» в процедуре уровня процедуры, подпроцедуре или функциональной процедуре в процедуре, в которой он объявлен.
«Частный» в разделе объявлений формы или модуля кода на уровне модуля (.frm, .bas). Каждая процедура в форме или модуле кода.
«Public» в разделе объявлений модуля глобального кода (.bas) повсюду в приложении.
В приложении Visual Basic используйте глобальные переменные только в том случае, если нет другого удобного способа обмена данными между формами. Если необходимо использовать глобальные переменные, объявите их в одном модуле и сгруппируйте по функциям. Дайте этому модулю осмысленное имя, указывающее его роль, например Public.bas.
Хорошей практикой кодирования является написание максимально модульного кода. Например, если ваше приложение отображает диалоговое окно, поместите все элементы управления и код, необходимые для создания диалогового окна, в одной форме. Это помогает организовать код приложения в полезные компоненты и сократить накладные расходы во время выполнения.
За исключением глобальных переменных (которые не следует передавать), процедуры и функции должны работать только с переданными им объектами. Глобальные переменные, используемые внутри процедуры, должны быть указаны в разделе объявлений в начале процедуры. Кроме того, ByVal следует использовать для передачи параметров в подпроцедуры и процедуры-функции, если только нет очевидной необходимости изменить значение переданного параметра.
По мере роста размера проекта работа по определению переменных быстро увеличивается. Размещение однобуквенного префикса диапазона перед префиксом типа отмечает этот рост, но длина имени переменной увеличивается ненамного.
префикс области видимости переменной
Пример префикса диапазона
глобальное имя пользователя gstrUserName
Уровень модуля mmblnCalcInProgress
Локально для обработки без dblVelocity
Если переменная объявлена как Public в стандартном модуле или модуле формы, то переменная имеет глобальную область видимости. Если переменная объявлена как Private в стандартном модуле или модуле формы соответственно, то эта переменная имеет область действия на уровне модуля.
Примечание. Согласованность является ключом к эффективному использованию этого метода; средство проверки синтаксиса в Visual Basic не распознает переменные уровня модуля, начинающиеся с «p».
постоянный
Тело имени константы имеет смешанный регистр, причем первая буква каждого слова пишется с заглавной буквы. Хотя стандартные константы Visual Basic не содержат информации о типе данных и диапазоне, такие префиксы, как i, s, g и m, полезны для понимания значения и диапазона константы. Для имен констант следует соблюдать те же правила, что и для переменных. Например:
mintUserListMax 'Максимальный предел списка пользователей
'(целое значение, локальное для модуля)
gstrNewLine 'Символ новой строки
'(Строка, используемая приложением глобально)
переменная
Объявление всех переменных сэкономит время программирования, поскольку будет меньше ошибок, вызванных операциями ввода (например, aUserNameTmp, sUserNameTmp или sUserNameTemp). На вкладке «Редактор» диалогового окна «Параметры» установите флажок «Требовать объявление переменной». Оператор Option Explicit требует, чтобы все переменные были объявлены в программе Visual Basic.
Переменные должны иметь префикс, указывающий их тип данных. Префикс можно расширить, чтобы указать область действия переменной, особенно для больших программ.
Используйте следующие префиксы, чтобы указать тип данных переменной.
Тип переменных данных
Пример префикса типа данных
String (тип строки) str strFName
Integer (короткий целочисленный тип) int intQuantity
Long (длинный целочисленный тип) lng lngDistance
Single (тип числа одинарной точности с плавающей запятой) sng sngAverage
Double (тип двойной точности с плавающей запятой) dbl dblTolerance
Логическое значение (логический тип) млрд млрдНайдено
Байт (тип байта) байт bytRasterData
Дата (тип даты) dte dteNow
Валюта (валютный расчет и тип расчета с фиксированной точкой) cur curRevenue
Объект (тип объекта) obj objCurrent
Вариант vnt vntCheckSum
Опишите имена переменных и процедур.
Тело имени переменной или процедуры должно быть написано в смешанном регистре и должно быть достаточно длинным, чтобы описать ее назначение. Кроме того, имя функции должно начинаться с глагола, например InitNameArray или CloseDialog.
Для часто используемых или длинных терминов рекомендуется использовать стандартные сокращения, чтобы рационализировать длину имени. Вообще говоря, имена переменных длиной более 32 символов трудно прочитать на мониторе VGA.
При использовании сокращений убедитесь, что они одинаковы во всем приложении. Если в проекте вы какое-то время используете Cnt и какое-то время Count, это приведет к ненужной путанице.
определяемый пользователем тип
В большом проекте с множеством определяемых пользователем типов часто необходимо присвоить каждому типу собственный трехсимвольный префикс. Если эти префиксы начинаются с «u», эти типы легко идентифицировать при работе с пользовательским типом. Например, ucli можно использовать в качестве префикса для определяемой пользователем переменной типа клиента.
[вернуться к индексу]
4. В случае простых условий выбора используйте функцию IIf().
Код Россо:
Если nNum = 0 Тогда
sName = "Санси"
Еще
sName = "Сюй"
Конец, если
Простой код:
sName=IIf(nNum=0,"sancy","Xu")
5. Попробуйте использовать Debug.Print для отладки.
При отладке многих новичков MsgBox используется для отслеживания значений переменных. Фактически, Debug.Print может не только добиться того же эффекта, но и будет игнорироваться во время окончательной компиляции программы. MsgBox необходимо комментировать или удалять вручную.
в целом:
MsgBox nName
должен:
Debug.Print nName
6. При неоднократном изменении свойств объекта попробуйте использовать With....End With
в целом:
Форма1.Высота = 5000
Форма1.Ширина = 6000
Form1.Caption = «Это MyLabel»
должен:
С формой1
.Высота = 5000
.Ширина = 6000
.Caption = «Это MyLabel»
Конец с
Эффективность выполнения программы этой структуры относительно высока, особенно в операторах цикла.
7. Попробуйте использовать значки сообщений в MsgBox, чтобы программа была более стандартизирована.
Вообще говоря
vbInformation — это сообщение, используемое для запроса подтверждения или успешной операции.
vbExclamation используется для вывода предупреждающих сообщений.
vbCritical сообщения, используемые для предупреждения кризисных ситуаций
vbQuestion — это сообщение, используемое для запроса вопросов.
[вернуться к индексу]
8. Используйте перечисления там, где это возможно
Формат перечисления:
[Общедоступный | Частный] Имя перечисления
имя участника [= константное выражение]
имя участника [= константное выражение]
....
Конец перечисления
Оператор Enum состоит из следующих частей:
частичное описание
Общественный Необязательный. Указывает, что тип Enum виден во всем проекте. По умолчанию для типов Enum установлено значение Public.
Частный опционально. Указывает, что тип Enum виден только в объявленном модуле.
требуется имя. Имя этого типа Enum. name должен быть допустимым идентификатором Visual Basic, который используется для указания типа при определении переменной или параметра этого типа Enum.
Требуется имя участника. Допустимый идентификатор Visual Basic, указывающий имена составляющих элементов этого типа Enum.
константное выражение необязательно. Значение элемента (типа Long). Могут быть другие типы Enum. Если константное выражение не указано, присвоенное значение равно либо 0 (если элемент является первым именем элемента), либо на единицу больше, чем значение его непосредственного предшественника.
иллюстрировать
Так называемые переменные перечисления относятся к переменным, определенным типом Enum. И переменные, и параметры могут быть определены как тип Enum. Элементы типа Enum инициализируются постоянным значением, указанным в инструкции Enum. Присвоенное значение может включать положительные и отрицательные числа и не может быть изменено во время выполнения. Например:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 Конец перечисления
Операторы перечисления могут появляться только на уровне модуля. После определения типа Enum вы можете использовать его для определения переменных, параметров или процедур, возвращающих этот тип. Типы перечислений не могут быть уточнены именами модулей. Типы Public Enum в модуле класса не являются членами класса, они просто записываются в библиотеку типов; Типы перечислений, определенные в стандартных модулях, не записываются в библиотеку типов. Типы Public Enum с одинаковым именем не могут быть определены одновременно в стандартном модуле и модуле класса, поскольку они используют одно и то же пространство имен. Если в разных библиотеках типов есть два типа Enum с одинаковым именем, но разными членами, ссылка на переменную этого типа будет зависеть от того, какая библиотека типов имеет более высокий приоритет ссылки.
Вы не можете использовать тип Enum в качестве цели в блоке With.
Пример оператора перечисления
В следующем примере показано использование инструкции Enum для определения коллекции именованных констант. В этом случае есть несколько выбираемых цветовых констант, используемых для разработки формы ввода данных в базу данных.
Цвета интерфейса публичного перечисления
icMistyRose = &HE1E4FF&
icSlateGray = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFFF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icЗолотой стержень = &H20A5DA&
icFirebrick = &H2222B2&
Конец перечисления
Преимущество в том, что это ускоряет программирование.