На картинке вверху приведена коротенькая функция, в которой "обыграно" только лишь одно слово "Колонка", из которого получилось целых 4 переменных. В других функциях количество переменных из одного ключевого слова может быть и больше. И это благодаря "венгерской нотации переменных".
Понятие "венгерская нотация переменных" хорошо прописано тут: Википедия о венгерской нотации переменных
Венгерская нотация в программировании — соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского происхождения Чарльзу Симонаи (венг. Simonyi Károly), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом Майкрософт[1].
Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими.
Применяемая система префиксов зависит от многих факторов:
- языка программирования (чем более «либеральный» синтаксис, тем больше контроля требуется со стороны программиста, а значит, тем более развита система префиксов. К тому же использование в каждом из языков программирования своей терминологии также вносит особенности в выбор префиксов);
- стиля программирования (объектно-ориентированный код может вообще не требовать префиксов, в то время как в «монолитном» для разборчивости они зачастую нужны);
- предметной области (например, префиксы могут применяться для записи единиц измерения);
Этот подход даёт мне, программисту, читаемость текста, экономию сил на выдумывание переменных и контроль типов. Так как тип переменной следует из первых букв нижнего регистра переменной.Пример из обработки "Загрузка выписки из клиент-банка в 1С:Бухгалтерию 2.0" :
Я пользуюсь следующим перечнем префиксов :
Префикс |
Смысл, тип значения |
"с" | Строка |
"л" | Логическая |
"н" | Number - Число (наследие языка Си) |
"х" | Икс, любой тип значения |
"б" | Булево |
"дт" | Дата |
"мк" | макет |
"об" | область макета |
"тд" | табличный документ |
"зп" | запрос |
"вп" | выполнить запрос |
"вб" | выбрать из запроса |
"сз" | Список значений |
"тз" | Таблица значений |
"тч" | Строка табличной части |
"зн" | значение из списка значений |
"пч" | Перечисление |
"спр" | Справочник |
"док" | Документ |
"фрм" | Форма |
"обр" | Обработка |
"мс" | Массив |
Функция создана для проверки уникальности контрагентов по ИНН и КПП.
Поэтому в качестве переменной используется ключевое слово "Контрагент".
А благодаря применению префиксов я получил необходимое количество переменных для работы с записями в справочнике "Контрагенты".
Также благодаря префиксам переменных отпадает необходимость придумывать подробные имена переменных. Зачем тратить воображение и буквы, если с первого взгляда становится понятно :
Переменная | Смысл, содержание |
сИНН | ИНН контрагента, строка |
лУникальностьПоИНН | Истина / Ложь - результат проверки уникальности справочника контрагентов |
нКонтрагент | Счётчик контрагентов с одним ИНН |
мкКонтрагенты | Макет печатной формы для задвоенных контрагентов |
обЗаголовок | Область заголовка макета контрагентов |
тдКонтрагенты | Табличный документ для вывода печатной формы задвоенных контрагентов |
зпКонтрагенты | Запрос "Контрагенты" |
впКонтрагенты | Результат выполнения запроса "Контрагенты" |
вбКонтрагентыИНН | Выборка из запроса "Контрагенты" |
спрОрганизация | Ссылка на справочник "Организации" |
Напоследок цитата из той же статьи из Википедии :
Преимущества
- Если встроенного механизма типизации не хватает, венгерская нотация позволяет записывать подтип[en] переменной — например,
int cPrice
может означать, что переменная имеет не просто целый тип, а валютный (currency). Именно такое применение префиксов было предложено Симони[2]. Это может пригодиться:
- В низкоуровневом программировании (когда набор доступных типов настолько узок, что, например, целый тип не отличается от булевого).
- В языках с динамической типизацией, например PHP, где одна и та же переменная может хранить значения любого типа.
- В инженерных расчётах (для записи единиц измерения). Это позволяет избавиться от немалого количества ошибок простым подсчётом размерностей.
- В других местах, где переменные одного и того же типа предназначены для хранения разнородных данных — например, в коде защиты от компьютерных взломщиков префикс может указывать на «безопасные» и «небезопасные» данные (SQL-инъекция, XSS).
- Венгерская нотация удобна для написания больших программ в неполнофункциональных (по современным меркам) редакторах без автоматизированной навигации по тексту. Скорее всего, именно поэтому она стала стандартным стилем кода в WinAPI.
- Венгерскую нотацию можно рассматривать как стандартную систему сокращений. Например, поле ввода для поиска и кнопка «Поиск» могут именоваться как
txtSearch
иbtnSearch
. Такая практика позволяет делать названия переменных короткими и в то же время осмысленными
Опрос по венгерской нотации:
А - Знаю, использую
Б - Знаю, не использую
В - Не знал раньше, попробую использовать
Г - Не знал раньше, отказываюсь применять
Благодарю за Ваши ответы!