Даем названия переменным: как префиксы экономят наше время
Разработка - Практика программирования
На картинке вверху приведена коротенькая функция, в которой "обыграно" только лишь одно слово "Колонка", из которого получилось целых 4 переменных. В других функциях количество переменных из одного ключевого слова может быть и больше. И это благодаря "венгерской нотации переменных".
Понятие "венгерская нотация переменных" хорошо прописано тут: Википедия о венгерской нотации переменных
Венгерская нотация в программировании — соглашение об именовании переменных, констант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского происхождения Чарльзу Симонаи (венг. Simonyi Károly), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом Майкрософт[1].
Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими.
Применяемая система префиксов зависит от многих факторов:
- языка программирования (чем более «либеральный» синтаксис, тем больше контроля требуется со стороны программиста, а значит, тем более развита система префиксов. К тому же использование в каждом из языков программирования своей терминологии также вносит особенности в выбор префиксов);
- стиля программирования (объектно-ориентированный код может вообще не требовать префиксов, в то время как в «монолитном» для разборчивости они зачастую нужны);
- предметной области (например, префиксы могут применяться для записи единиц измерения);
Этот подход даёт мне, программисту, читаемость текста, экономию сил на выдумывание переменных и контроль типов. Так как тип переменной следует из первых букв нижнего регистра переменной.Пример из обработки "Загрузка выписки из клиент-банка в 1С:Бухгалтерию 2.0" :
Я пользуюсь следующим перечнем префиксов :
Префикс |
Смысл, тип значения |
"с" | Строка |
"л" | Логическая |
"н" | Number - Число (наследие языка Си) |
"х" | Икс, любой тип значения |
"б" | Булево |
"дт" | Дата |
"мк" | макет |
"об" | область макета |
"тд" | табличный документ |
"зп" | запрос |
"вп" | выполнить запрос |
"вб" | выбрать из запроса |
"сз" | Список значений |
"тз" | Таблица значений |
"тч" | Строка табличной части |
"зн" | значение из списка значений |
"пч" | Перечисление |
"спр" | Справочник |
"док" | Документ |
"фрм" | Форма |
"обр" | Обработка |
"мс" | Массив |
Функция создана для проверки уникальности контрагентов по ИНН и КПП.
Поэтому в качестве переменной используется ключевое слово "Контрагент".
А благодаря применению префиксов я получил необходимое количество переменных для работы с записями в справочнике "Контрагенты".
Также благодаря префиксам переменных отпадает необходимость придумывать подробные имена переменных. Зачем тратить воображение и буквы, если с первого взгляда становится понятно :
Переменная | Смысл, содержание |
сИНН | ИНН контрагента, строка |
лУникальностьПоИНН | Истина / Ложь - результат проверки уникальности справочника контрагентов |
нКонтрагент | Счётчик контрагентов с одним ИНН |
мкКонтрагенты | Макет печатной формы для задвоенных контрагентов |
обЗаголовок | Область заголовка макета контрагентов |
тдКонтрагенты | Табличный документ для вывода печатной формы задвоенных контрагентов |
зпКонтрагенты | Запрос "Контрагенты" |
впКонтрагенты | Результат выполнения запроса "Контрагенты" |
вбКонтрагентыИНН | Выборка из запроса "Контрагенты" |
спрОрганизация | Ссылка на справочник "Организации" |
Напоследок цитата из той же статьи из Википедии :
Преимущества
- Если встроенного механизма типизации не хватает, венгерская нотация позволяет записывать подтип[en] переменной — например,
int cPrice
может означать, что переменная имеет не просто целый тип, а валютный (currency). Именно такое применение префиксов было предложено Симони[2]. Это может пригодиться:
- В низкоуровневом программировании (когда набор доступных типов настолько узок, что, например, целый тип не отличается от булевого).
- В языках с динамической типизацией, например PHP, где одна и та же переменная может хранить значения любого типа.
- В инженерных расчётах (для записи единиц измерения). Это позволяет избавиться от немалого количества ошибок простым подсчётом размерностей.
- В других местах, где переменные одного и того же типа предназначены для хранения разнородных данных — например, в коде защиты от компьютерных взломщиков префикс может указывать на «безопасные» и «небезопасные» данные (SQL-инъекция, XSS).
- Венгерская нотация удобна для написания больших программ в неполнофункциональных (по современным меркам) редакторах без автоматизированной навигации по тексту. Скорее всего, именно поэтому она стала стандартным стилем кода в WinAPI.
- Венгерскую нотацию можно рассматривать как стандартную систему сокращений. Например, поле ввода для поиска и кнопка «Поиск» могут именоваться как
txtSearch
иbtnSearch
. Такая практика позволяет делать названия переменных короткими и в то же время осмысленными
Опрос по венгерской нотации:
А - Знаю, использую
Б - Знаю, не использую
В - Не знал раньше, попробую использовать
Г - Не знал раньше, отказываюсь применять
Благодарю за Ваши ответы!
Специальные предложения
См. также
[Шпаргалка] Программное создание элементов формы 338
06.09.2019 16751 rpgshnik 43
С 2020 года сервис «Продление поддержки конфигурации 1С:УПП» подорожает вдвое Промо
Успейте продлить поддержку УПП до повышения цен! Фирма «1С» предупредила об изменении цен на сервис «Продление поддержки конфигурации "1С:Управление производственным предприятием"». С 1 января 2020 года сервис подорожает в два раза.
Агрегатные функции СКД, о которых мало кто знает 387
05.09.2019 19862 ids79 45
Обмен данными. Консистентность vs Многопоточность 29
03.09.2019 5892 m-rv 1
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив 285
08.08.2019 24719 ids79 34
Обработчики событий при записи объектов. Зачем и что за чем? 247
25.07.2019 19022 4 AlbinaAAA 24
Базовый курс по разработке мобильных 1C-приложений для Android-устройств. Третий поток. Онлайн-интенсив с 11 февраля по 05 марта 2020 г. Промо
Данный онлайн-курс предусматривает изучение базовых принципов создания приложений для операционной системы Android, работающих на мобильной платформе “1С:Предприятие”. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие” при разработке прикладных решений для “обычных” компьютеров, но пока ещё не занимался разработкой 1С-приложений, предназначенных для работы на мобильных устройствах.
7500 рублей
Создание отчетов с помощью СКД - основные понятия и элементы 225
25.06.2019 27746 ids79 17
Подсистема "Варианты отчетов". Используете ли Вы ее правильно? 228
04.06.2019 22592 YPermitin 49
Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо
На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.
16450 рублей
Выгрузка документа по условию 5
25.04.2019 8616 m-rv 2
Как настроить правильную техподдержку (helpdesk, service desk на коленке) 40
24.04.2019 10271 siddy 0
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Преобразование EXCEL в таблицу значений без COM и других извращений 219
18.04.2019 16377 9 Eret1k 43
Как прикрутить ГУИД к регистру сведений 23
16.04.2019 11511 m-rv 16
Готовые переносы данных из различных конфигураций 1C Промо
Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.
Excel vs 1С: битва с неожиданным исходом 43
11.04.2019 29063 bolefirenko 109
Копирование числовых ячеек из 1С в Excel 26
15.01.2019 14254 itriot11 21
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.11.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.
Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария 236
09.01.2019 32091 Vladimir Litvinenko 69
Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 529
14.11.2018 44406 GeterX 94
Онлайн-курс «Практические аспекты внедрения регламентированного учета и расчета себестоимости в 1С:ERP на крупных промышленных предприятиях» с 17 февраля по 13 марта 2020 года. Промо
Курс рассчитан для подготовки экспертов по регламентированному учету и учету затрат для внедрения на крупных промышленных предприятиях с «исторически сложившимся» учетом
9000 рублей
Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С 132
10.11.2018 25032 ids79 40
Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git 285
18.10.2018 43483 stas_ganiev 72
1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо
Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.
6500 рублей
Вспомогательные инструкции в коде 1С 108
15.10.2018 22910 tormozit 100
Из Excel в 1С запросом 33
14.08.2018 15961 m-rv 5
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Тестер: частые вопросы 159
25.07.2018 22857 grumagargler 24
Повышаем эффективность разработки правил обмена 127
25.06.2018 22442 olegtymko 47
Программы для исполнения 488-ФЗ: Маркировка товаров Промо
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
Как сделать запрос на изменение данных 76
01.06.2018 23957 m-rv 21
Строим графы средствами 1С (без GraphViz) 46
23.05.2018 19819 slozhenikin_com 20
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.130.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Распределение расходов пропорционально продажам 9
13.05.2018 13942 Rustig 9
Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники 97
11.05.2018 18287 V.Stavinsky 11