Даем названия переменным: как префиксы экономят наше время

Публикация № 1054929

Разработка - Практика программирования

Понятные названия переменных экономят время и силы разработчика : в начале, когда мы даём названия переменным, в процессе развития разработки, когда мы "на лету" понимаем назначение той или иной переменной, в конце, когда мы передаём разработку на поддержку других программистов, сами переходя к новым разработкам

На картинке вверху приведена коротенькая функция, в которой "обыграно" только лишь одно слово "Колонка", из которого получилось целых 4 переменных. В других функциях количество переменных из одного ключевого слова может быть и больше. И это благодаря "венгерской нотации переменных".

Понятие "венгерская нотация переменных" хорошо прописано  тут:  Википедия о венгерской нотации переменных  

Венгерская нотация в программировании — соглашение об именовании переменныхконстант и прочих идентификаторов в коде программ. Своё название венгерская нотация получила благодаря программисту компании Microsoft венгерского  происхождения Чарльзу Симонаи (венг. Simonyi Károly), предложившему её ещё во времена разработки первых версий MS-DOS. Эта система стала внутренним стандартом Майкрософт[1].

Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов. При этом, как правило, ни само наличие префиксов, ни их написание не являются требованием языков программирования, и у каждого программиста (или коллектива программистов) они могут быть своими.

Применяемая система префиксов зависит от многих факторов:

  • языка программирования (чем более «либеральный» синтаксис, тем больше контроля требуется со стороны программиста, а значит, тем более развита система префиксов. К тому же использование в каждом из языков программирования своей терминологии также вносит особенности в выбор префиксов);
  • стиля программирования (объектно-ориентированный код может вообще не требовать префиксов, в то время как в «монолитном» для разборчивости они зачастую нужны);
  • предметной области (например, префиксы могут применяться для записи единиц измерения);

 

Этот подход даёт мне, программисту, читаемость текста, экономию сил на выдумывание переменных и контроль типов. Так как тип переменной следует из первых букв нижнего регистра переменной.Пример из обработки "Загрузка выписки из клиент-банка в 1С:Бухгалтерию 2.0" : 

 

Я пользуюсь следующим перечнем префиксов : 

Префикс

Смысл, тип значения
"с" Строка
"л" Логическая
"н" Number - Число (наследие языка Си)
"х" Икс, любой тип значения
"б" Булево
"дт" Дата
"мк" макет
"об" область макета
"тд" табличный документ
"зп" запрос
"вп" выполнить запрос
"вб" выбрать из запроса
"сз" Список значений
"тз" Таблица значений
"тч" Строка табличной части
"зн" значение из списка значений
"пч" Перечисление
"спр" Справочник
"док" Документ
"фрм" Форма
"обр" Обработка
"мс" Массив

 

Функция создана для проверки уникальности контрагентов по ИНН и КПП. 

Поэтому в качестве переменной используется ключевое слово "Контрагент".

А благодаря применению префиксов я получил необходимое количество переменных для работы с записями в справочнике "Контрагенты".

Также благодаря префиксам переменных отпадает необходимость придумывать подробные имена переменных. Зачем тратить воображение и буквы, если с первого взгляда становится понятно : 

Переменная Смысл, содержание
сИНН ИНН контрагента, строка
лУникальностьПоИНН Истина / Ложь - результат проверки уникальности справочника контрагентов
нКонтрагент Счётчик контрагентов с одним ИНН
мкКонтрагенты Макет печатной формы для задвоенных контрагентов
обЗаголовок Область заголовка макета контрагентов
тдКонтрагенты Табличный документ для вывода печатной формы задвоенных контрагентов
зпКонтрагенты Запрос "Контрагенты"
впКонтрагенты Результат выполнения запроса "Контрагенты"
вбКонтрагентыИНН Выборка из запроса "Контрагенты"
спрОрганизация Ссылка на справочник "Организации"

 

Напоследок цитата из той же статьи из Википедии : 

Преимущества

  • Если встроенного механизма типизации не хватает, венгерская нотация позволяет записывать подтип[en] переменной — например, int cPrice может означать, что переменная имеет не просто целый тип, а валютный (currency). Именно такое применение префиксов было предложено Симони[2]. Это может пригодиться:
    • В низкоуровневом программировании (когда набор доступных типов настолько узок, что, например, целый тип не отличается от булевого).
    • В языках с динамической типизацией, например PHP, где одна и та же переменная может хранить значения любого типа.
    • В инженерных расчётах (для записи единиц измерения). Это позволяет избавиться от немалого количества ошибок простым подсчётом размерностей.
    • В других местах, где переменные одного и того же типа предназначены для хранения разнородных данных — например, в коде защиты от компьютерных взломщиков префикс может указывать на «безопасные» и «небезопасные» данные (SQL-инъекцияXSS).
  • Венгерская нотация удобна для написания больших программ в неполнофункциональных (по современным меркам) редакторах без автоматизированной навигации по тексту. Скорее всего, именно поэтому она стала стандартным стилем кода в WinAPI.
  • Венгерскую нотацию можно рассматривать как стандартную систему сокращений. Например, поле ввода для поиска и кнопка «Поиск» могут именоваться как txtSearch и btnSearch. Такая практика позволяет делать названия переменных короткими и в то же время осмысленными

 

Опрос по венгерской нотации: 

А - Знаю, использую

Б - Знаю, не использую

В - Не знал раньше, попробую использовать

Г - Не знал раньше, отказываюсь применять

Благодарю за Ваши ответы!

Специальные предложения

Лучшие комментарии
74. LimarenkoA 31.01.20 08:43 Сейчас в теме
Очень крутой способ написания кода! В индустрии не долго, но теперь понимаю зачем так было написано. Буду сам пользоваться и покажу коллегам, спасибо за статью!
Designer1C; +1 1 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 06.05.19 12:42 Сейчас в теме
спасибо, кэп
Неопределено; +1 1 Ответить
2. PLAstic 259 06.05.19 14:42 Сейчас в теме
Я использовал венгерскую нотацию на сях... Использовал потом с библиотекой TurboVision... Потом пришёл С++ и мне там тоже было удобно...
Потом наступила эра русскоязычных названий на 1С, где немалое преимущество - чтение кода как обычного текста. И с уверенностью могу сказать, что неудобно было использовать эту нотацию.

"Если Отказ Тогда" или из примера выше намного проще по русски читать так:

Функция НомерКолонки(МассивКолонок, ИмяКолонки)
  НомерКолонки = 0;
  Для каждого Колонка из МассивКолонок Цикл
    НомерКолонки = НомерКолонки + 1;
    Если Колонка.Имя = ИмяКолонки Тогда
      Возврат НомерКолонки;
    КонецЕсли;
  КонецЦикла;
  Возврат 0;
КонецФункции;
Показать
А если вдуматься в текст, то проще написать одной строкой:

Функция НомерКолонки(МассивКолонок, ИмяКолонки)
  Возврат МассивКолонок.Индекс(МассивКолонок[ИмяКолонки]) + 1;
КонецФункции;

Можно ещё добавить проверку на принадлежность искомой колонки массиву колонок.

На моей практике не встречалось случаев, когда можно было бы не найти нормальных имён для переменных и приходилось бы выражать типы значений переменных префиксами. Не стОит умышленно перечёркивать весомое преимущество русскоязычной платформы.
akocur; r2d255; WellMaster; AlexanderP; a.kazeko; Бубузяка; herfis; wildfalcon; Larkan; mivari; rpgshnik; mysm; t278; klaus38; Dream_kz; Aftee; acanta; +17 Ответить
7. rpgshnik 2381 07.05.19 06:53 Сейчас в теме
Было дело тоже пробовал её использовать. Но единственный плюс явное обозначение новой переменной, чтобы не перезаписать глобальную или модульную, это плюс, но в методологии 1С намного удобнее писать как заметил Леонид в комментарии (2). Иногда добавляю префикс для надежности "тек" - текущая или "нов" - новая, потому что в некоторых самописных конфигурациях страшно словить глобальную переменную :))
34. boln 1026 09.05.19 16:06 Сейчас в теме
(7)
в некоторых самописных конфигурациях страшно словить глобальную переменную :))
А за глобальные переменные надо отрывать руки и вносить в черный список ламеров :)
mivari; rpgshnik; +2 Ответить
44. Designer1C 345 09.05.19 19:53 Сейчас в теме
(34)
А за глобальные переменные надо отрывать руки и вносить в черный список ламеров

Наверное, в особо критических случаях и у меня может возникнуть такая же мысль.
Хотя я стараюсь придерживаться точки зрения, что сам иногда допускаю обидные "ляпы".
Сам я ведь когда-то тоже был начинающим программистом и делал "детские" ошибки.
В общем, думая о других со злостью, готовы ли мы простить себя за свои бывшие ошибки ?
45. acanta 09.05.19 20:43 Сейчас в теме
(44) с экзистенциальной точки зрения мы думаем о других со злостью когда за все то же самое не прощали нас.
Поэтому простить нужно не себя, а тех, кто предъявлял к нам избыточные требования, если все это сегодня действительно никому не нужно.
47. boln 1026 10.05.19 01:24 Сейчас в теме
(44) Ах, хорошо еще, что я не написал "сжигать на костре" или не придумал еще более ужасную казнь...
Смайлик, конечно, не заметен в тексте? И в цитату специально его не включили, надо полагать, чтобы о "злости" можно было сказать?
Fox-trot; +1 Ответить
3. Aftee 06.05.19 14:58 Сейчас в теме
Г
Раньше не знал, но иногда встречалась подобная префиксация, теперь буду знать, что она означает.
Возможно, дело вкуса и привычек каждого, но для меня "МассивРеквизитов" выглядит привлекательнее, чем "мсРеквизиты" или что-то подобное.
user774630; +1 Ответить
25. Designer1C 345 07.05.19 19:15 Сейчас в теме
(3)Рекомендую попробовать однажды.
Один из плюсов : меньше букв набирать.
А второй плюс : префикс воспринимается как "фон" для смысла самой переменной.
Всё-таки чем короче словосочетание, тем быстрее понимается.
milov.aleksey; +1 Ответить
50. TODD22 18 10.05.19 13:51 Сейчас в теме
(25)
Один из плюсов : меньше букв набирать.

А что буквы могут закончиться?
51. PLAstic 259 13.05.19 09:13 Сейчас в теме
(25) Мало кто знает, но Ctrl+Пробел никто не отменял ещё.
4. A.Sytchev 06.05.19 15:00 Сейчас в теме
Б - Венгерская нотация противоречит стандарту https://its.1c.ru/db/v8std#content:454:hdoc , а значит использовать ее в серьезных проектах выглядит сомнительным решением.
mivari; BruSeV; PLAstic; rpgshnik; rusmil; +5 Ответить
6. rusmil 218 07.05.19 05:55 Сейчас в теме
(4) Однако это не мешает фирме КАМИН использовать венгерскую нотацию в своих продуктах по расчету зарплаты. Что это двойные стандарты?
Сам венгерскую нотацию не использую, а вот кто к ней привык уже отказаться трудно.
14. tamepjlah 07.05.19 12:22 Сейчас в теме
(6) У нас один сотрудник, "выходец" из КАМИНА, до сих пор использует венгерскую нотацию. И мне, как человеку, который никогда ею не пользовался бывает очень сложно разбираться в его коде.
22. Designer1C 345 07.05.19 19:07 Сейчас в теме
(14)Да, это очевидный минус "венгерской нотации" :
Когда первый раз сталкиваешься с исходным текстом программы и если нет пояснения от разработчика, и нет "расшифровки" префиксов в дополнение к исходному коду, то действительно сложно понять эту абру-кадабру.
49. TODD22 18 10.05.19 13:49 Сейчас в теме
(6)
Однако это не мешает фирме КАМИН использовать венгерскую нотацию в своих продуктах по расчету зарплаты. Что это двойные стандарты?

Нет никаких "двойных" стандартов. Есть стандарт фирмы "Камин". К тому же могут быть "исторические" предпосылки к применению ВН. Например когда то давно кто то этот стандарт ввёл внутри компании и теперь учитывая большое количество кода отказаться от неё просто так не могут. То что фирма Камин использует ещё не значит что это правильный и хороший подход.
К тому же не верно делать выводы на основании одного случая. Одна фирма использует, 99 компаний не используют... "Ошибка выжившего".
9. suhoi 29 07.05.19 09:55 Сейчас в теме
(4)

Не совсем понятно, где противоречие.
К примеру: Артикул. Почему будет нарушением сАртикул?
Какие из пунктов стандарта нарушаются?
10. A.Sytchev 07.05.19 10:16 Сейчас в теме
(9)

2. Имена следует образовывать путем удаления пробелов между словами. При этом, каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Пример:

Перем ДиалогРаботыСКаталогом; // Диалог работы с каталогом
Перем КоличествоПачекВКоробке; // Количество пачек в коробке

Примеры некорректных имен переменных:

масРеквизитов, соотвВидИмя, новСтр
41. Designer1C 345 09.05.19 19:32 Сейчас в теме
(10)Насколько я помню, в исходных текстах типовых конфигураций 1С : 8 на обычных формах встречаются префиксы в некоторых модулях. чаще всего это : "тз", Таблица значений.
42. Designer1C 345 09.05.19 19:38 Сейчас в теме
(41)Примеры быстро нашлись. Типовая УПП 1.3. Объекты "на замке" :
Прикрепленные файлы:
55. ildary 13.05.19 09:44 Сейчас в теме
(41) То есть Вы предлагаете равняться на нарушение программистами 1С собственного стандарта? Тем более, что приведённый Вами код либо старый (УПП), либо посторонней фирмы (Камин).
Brawler; mivari; A.Sytchev; Fox-trot; +4 Ответить
57. Fox-trot 118 13.05.19 09:49 Сейчас в теме
(55) толку нет ломать копья
никто никого не переубедит
в споре истина не рождается, каждый останется при своем

пысы осталось только на личности перейти ))
58. ildary 13.05.19 10:02 Сейчас в теме
(57) Полностью с Вами согласен, написал в надежде, что новички (для которых статья написана) прочтут камменты и сделают выводы.
12. 7OH 32 07.05.19 12:09 Сейчас в теме
(4) сама 1С противоречит какому либо стандарту (как пример иногда забивая на модификатор ЗНАЧ в параметрах функции для некоторых типов данных).
Ну и мои 5 копеек - оооочень удобно формулы с такими именами читать.
Обычное сложение в таких типовых зачастую не прочитать, если у тебя экран меньше 17".
13. A.Sytchev 07.05.19 12:17 Сейчас в теме
(12) Ну тот факт, что какой-то программист какого-то решения в самой 1С написал что-то не посмотрев в стандарты, никак не умаляет того факта, что нам стоит их придерживаться, правда? :)
15. 7OH 32 07.05.19 12:30 Сейчас в теме
(13) Забить на ЗНАЧ - это не то, чтобы не стандарт - это нонсенс.

Ну и как можно прислушиваться к тем, кто постоянно не доделывает вещи до конца.

Кто может спокойной вставить ДВА новых параметра в середину, а не в конец:
Было
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
Стало
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)

Нас за такое в институте повесил бы препод лично.
boln; Fox-trot; milov.aleksey; +3 Ответить
16. TODD22 18 07.05.19 12:36 Сейчас в теме
(15)
Ну и как можно прислушиваться к тем, кто постоянно не доделывает вещи до конца.

Разработчики типовых и разработчики платформы разные люди и ту функциональность и подходы которые закладывают разработчики платформы разработчики типовых не всегда понимают и следуют ей.

З.Ы. Это мнение сотрудника 1С высказанное в одном из курсов обучения разработке.
65. user774630 13.05.19 12:16 Сейчас в теме
66. TODD22 18 13.05.19 12:25 Сейчас в теме
(65)Если память не изменяет то вроде он.
17. TODD22 18 07.05.19 12:38 Сейчас в теме
(15)
Кто может спокойной вставить ДВА новых параметра в середину, а не в конец:

В стандартах разработки рекомендуется параметры расставлять по степени важности слева на право, на сколько помню.
24. Designer1C 345 07.05.19 19:12 Сейчас в теме
(4)Минздрав рекомендует делать и прививки и антигриппозные вакцины. Что ж, всем делать ?
Кстати, пугают, что детей в детский сад не примут или напротив выставят из него.

Чтобы принимать решение, важно понимать плюсы и минусы выбора.

Я иногда обхожусь и без префиксов.
43. Designer1C 345 09.05.19 19:49 Сейчас в теме
(4)И при этом в типовых конфигурациях 1С, например УПП, венгерская нотация иногда встречается. Пример в прикреплённом рисунке

Я бы код сделал чуть по-другому :
	// Сначала попытаемся найти строку, на которую непогашенную сумму, можно отнести без ошибок округления
	Если НепогашеннаяСумма <> 0 Тогда
		тзТовары = Товары.Выгрузить();
		тзТовары.Сортировать("Сумма Убыв");
		
		ТестоваяСтрока = Товары.Добавить();
		Для нТовары = 0 По тзТовары.Количество() - 1 Цикл
			СтрокаТабличнойЧасти = тзТовары[нТовары];
			Если СтрокаТабличнойЧасти.Пометка Тогда
				ЗаполнитьЗначенияСвойств(ТестоваяСтрока, СтрокаТабличнойЧасти);
Показать


то есть вместо счётчика "Сч" вставил "нТовары" (н - number)

Согласитесь : Проблема не в самой "венгерской нотации", а в непонимании, что автор программного кода хотел сказать, применив какой-либо префикс.

Переменная "Сч" : "Счётчик" или "Счёт". Если вчитаться, то это "Счётчик". Но иногда ведь бывает и "Счёт".
Прикрепленные файлы:
52. PLAstic 259 13.05.19 09:17 Сейчас в теме
(43) Тоже люблю букву ё, но в соответствии со стандартом 1С будет "Счетчик" и тут такой сложности конструкция, да и название переменной настолько очевидное, что префиксы не нужны. Какие ещё у вас бывают счётчики? Зачем вообще префикс этой переменой?
А использовать совместно транслит и русские слова - это феерично.8-D
5. boln 1026 06.05.19 16:21 Сейчас в теме
Я лично использую венгерскую нотацию только в одном случае - помечаю префиксом м переменные уровня модуля, чтобы быть с ними повнимательнее и случайно не затереть:
&НаКлиенте
Перем мСтекОповещений;
PLAstic; rusmil; +2 Ответить
8. ltfriend 586 07.05.19 08:39 Сейчас в теме
Только интересно, почему её практически больше ни где не используют? Сам пользовался, когда писал на С под WinAPI. И потом по привычке поначалу использовал ее в 7рке. Сейчас предпочитаю camelCase.
Дополню автора копи/пастой википедии, которую он почему-то упустил:

- Некоторые программисты считают, что использование префиксов делает имена переменных менее понятными и, таким образом, ухудшает читаемость кода.
- Если неизвестно имя переменной без префиксов, подчас трудно восстановить её префиксы.
- Система автодокументации, если она не понимает системы префиксов, отсортирует алфавитный список по префиксу, что может отрицательно сказаться на качестве документации. Впрочем, имена функций обычно префиксами не снабжают.
- Запись нескольких префиксов из-за частого использования заглавных букв и знаков подчёркивания может стать «пляской на кнопке ⇧ Shift».
- Средства навигации, которые включены в современные редакторы кода, и так позволяют видеть тип любой переменной и быстро переходить к точке, где она определена — то есть, использование префиксов может быть избыточным.
- При изменении типа потребуется изменять имя переменной (не все редакторы кода могут делать это автоматически).
- Существуют и другие средства задания типа переменной в её имени: например, слова is, has и т. д. для булевского типа (IsLoggedIn), count для счётчика (RefCount), множественное число для массива (UserIds). В языках, в которых заглавные буквы не эквивалентны строчным, регистр букв также может кодировать что-либо.
-Известный противник венгерской нотации — Линус Торвальдс: «Вписывание типа переменной в её имя (так называемая венгерская нотация) ущербно — компилятор и так знает типы и может проверить их, и это запутывает программиста».
38. Designer1C 345 09.05.19 19:08 Сейчас в теме
(8)
Дополню автора текстом из википедии который он почему-то упустил
: автор хотел донести до читателей (программистов-стажёров) свою мысль, а не перепечатать статью из Википедии.
Автор хотел поделиться своим успешным опытом. Но получил в ответ убеждения в том, что таким способом практически никто не пользуется
И как раз такие рецензенты и потрудились вставить недостающий, с их точки зрения, текст из Википедии в обсуждении к статье.

Видимо, идея применять "венгерскую нотацию" в текстах 1С многих пугает.
Я допускаю такой вариант, если кто-то будет поддерживать мои разработки.
В этом случае достаточно новому программисту ознакомиться с таблицей кодировки : какой префикс что означает. И можно спокойно читать исходные тексты любителей венгерской нотации.
Такая таблица может храниться в макете отчёта, обработки, общем модуле.
11. FreeArcher 98 07.05.19 10:25 Сейчас в теме
Вот что на это пишет Роберт Мартин в книге Чистый код

Венгерская запись
В доисторические времена, когда в языках действовали ограничения на длину имен, мы нарушали это правило по необходимости — и не без сожалений . В Fortran первая буква имени переменной обозначала код типа . В ранних версиях BASIC имена могли состоять только из одной буквы и одной цифры . Венгерская запись (HN, Hungarian Notation) подняла эту проблему на новый уровень .Венгерская запись играла важную роль во времена Windows C API, когда программы работали с целочисленными дескрипторами (handle), длинными указателями, указателями на void или различными реализациями «строк» (с разным применением и атрибутами) . Компиляторы в те дни не поддерживали проверку типов, поэтому программистам были нужны «подсказки» для запоминания типов .
В современных языках существует куда более развитая система типов, а компиляторы запоминают типы и обеспечивают их соблюдение . Более того, появилась тенденция к использованию меньших классов и более коротких функций, чтобы программисты видели точку объявления каждой используемой переменной . Java-программисту кодировать типы в именах не нужно . Объекты обладают сильной типизацией, а рабочие среды развились до такой степени, что могут выявить ошибку типа еще до начала компиляции! Таким образом, в наши дни венгерская запись и другие формы кодирования типов в именах превратились в обычные пережитки прошлого . Они усложняют изменение имени или типа переменных, функций и классов . Они затрудняют чтение кода . Наконец, они повышают риск
того, что система кодирования собьет с толку читателя кода .

***
Код должен быть как можно более выразительным . Слишком длинные выражения, венгерская запись, «волшебные числа» — все это скрывает намерения автора .


Суть в том, что переменные нужно именовать так, чтобы из их названия было четко понятно, для чего они. Тогда необходимости в дополнительных нотациях уже не будет.

Иногда действительно удобно обозначить название переменной так, чтобы был понятен смысл и содержание переменной, например, "СписокКлиентов", "СтрокаИнформации", "МассивСсылок". Но это не Венгерская нотация, а просто название переменной.

Вобщем я согласен с Робертом Мартином и против лишних префиксов.
herfis; Brawler; SlavaKron; PLAstic; +4 Ответить
72. Brawler 476 06.10.19 23:16 Сейчас в теме
(11) Согласен.
Как по мне, префиксы можно использовать чтобы не было конфликта имен в разных областях видимости.
Например, на форме описан реквизит с именем "Имя1" и в одной из функций описанной в модуле формы вот просто стойкое желание появилось именно с таким же именем переменную заюзать, тогда можно и префикс дописать, но смотрится уже не так как хочется, однако есть же ключевое слово "Перем" позволяющее объявить явно переменную с нужным именем внутри функции/процедуры.
Выходит стоит на постоянной основе явно объявлять переменные, но все отвыкли от этого, так как язык 1С это допускает.
18. TODD22 18 07.05.19 12:48 Сейчас в теме
В языках с динамической типизацией тип переменной определяется хранимым в ней значением, а не префиксом.
user774630; mivari; Бубузяка; milov.aleksey; SlavaKron; FreeArcher; +6 Ответить
19. FreeArcher 98 07.05.19 17:21 Сейчас в теме
(18) Самый веский и короткий аргумент ))
40. Designer1C 345 09.05.19 19:22 Сейчас в теме
(19)
Самый веский и короткий аргумент
В споре ? Эвона как ! Со мною спорят... Хм. А я и не знал. Статья написана для программистов - стажёров.
Тех, у кого за долгие годы сложился свой стиль, я разве убеждаю бросить все свои привычки и срочно перейти на "венгерскую нотацию" ?

Для Вас это может быть и спор.
Для меня это возможность поделиться удобным способом.
Мне не нужно спорить, чтобы что-то себе доказать.
Пусть каждый найдёт свой стиль. Лично я спокойно отношусь к исходникам других авторов.
А своих исходниках, иногда приводил свою таблицу соответствий. Это должно решать вопрос полного понимания.
Хотя венгерская нотация сама по себе интуитивно понятна, если раньше про неё немного слышал.
53. PLAstic 259 13.05.19 09:30 Сейчас в теме
(40) Тем хуже, что статью вы адресуете стажёрам. Вы портите им жизнь в самом начале карьеры.
Долгое время я переделывал цветовую гамму конфигуратора на монохромный. Когда на курсах по платформе это увидел препод, он весомо заметил "Не пытайтесь подстраивать под себя платформу и использовать уникальный стиль программирования. Так вы усложняете жизнь и себе, и другим." Со временем я бросил эту затею и привык к штатной цветовой гамме. Я не переделываю её теперь на каждом компе и севший после меня программер не восклицает "омг, что за хрень тут с 1С случилась!"
Так же и тут вы советуете новичкам использовать архаизм. Это плохо.
A.Sytchev; +1 Ответить
20. Designer1C 345 07.05.19 19:02 Сейчас в теме
(18)
В языках с динамической типизацией тип переменной определяется хранимым в ней значением, а не префиксом.

Разве статья о типизации переменных ?
23. TODD22 18 07.05.19 19:11 Сейчас в теме
(20)
Разве статья о типизации переменных ?

Тогда зачем вы советуете указывать префикс к переменной который "подсказывает" какой у неё тип?
Fox-trot; +1 Ответить
28. Designer1C 345 07.05.19 21:25 Сейчас в теме
(23)То, что префикс указывает на тип переменной, это подсказка самому себе, какой тип данных следует ожидать при работе программы.
Это бывает удобно при работе в отладчике

Но при этом польза и в том, что :
1)В модулях объектов это позволяет избежать затирку переменных типовой конфигурации или реквизитов и табличных частей.
2)Увеличивает количество доступных для разработки переменных, которые названы однотипно
3)Сокращает длину переменных
4)Делает код лучше читаемым.

Естественно, это моё субъективное мнение.

Ломать свои привычки каждому из нас трудно, особенно если нет особой выгоды.

Для кого-то выгода в том, что увидев процедуры и функции с венгерской нотацией, сможет легко разобраться в чужом коде.
29. TODD22 18 07.05.19 23:37 Сейчас в теме
(28)
То, что префикс указывает на тип переменной, это подсказка самому себе, какой тип данных следует ожидать при работе программы.

В этом и проблема. Попробуйте погуглить что то ещё по мимо первой ссылки на Вики.
36. Designer1C 345 09.05.19 18:56 Сейчас в теме
(29)Неужели Вы думаете, что я не читал отзывы по "венгерской нотации" на сайтах, посвящённых 1С ?
Если 1/10 программистов иногда применяет этот способ - уже хорошо.
А некоторые просто не слышали о таком методе.

Странная ситуация получается : у меня многолетний способ применения нотации. Я рассказываю о своём успешном опыте на конкретных примерах,
А меня в ответ отговаривают и убеждают прекратить это.

Разве я кого-то отговариваю от его персонального способа написания переменных ? От чего же так немилостивы некоторые рецензенты ?
37. Designer1C 345 09.05.19 18:58 Сейчас в теме
(29)А своими словами сказать - нет сил ?
И "гуглить "то не знаю что" - какой результат ожидаете ?
54. PLAstic 259 13.05.19 09:43 Сейчас в теме
(28)
1)В модулях объектов это позволяет избежать затирку переменных типовой конфигурации или реквизитов и табличных частей.

Ничего не затирается, потому что глобальные переменные начинаются с префикса "гл", а реквизиты адресуются через "Объект". Исключение - модуль объекта, но и там ничто не мешает использовать новичкам "ЭтотОбъект", раз уж вы считаете этот кейс настолько распространённым.
2)Увеличивает количество доступных для разработки переменных, которые названы однотипно

В примере выше я показывал, что в русском языке достаточно слов и словосочетаний для уникальных имён переменных. А если проблемы всё же возникают, то следует поработать в направлении более точного определения сущности переменных и развитием лексикона. У меня в примере не было проблем с дублированием имён переменных, так ведь?
3)Сокращает длину переменных

Садись, два. Ctrl+Пробел работает во всех версиях платформы.
4)Делает код лучше читаемым.

В примере выше я наглядно показал, насколько лучше читается код с переменными, именованными в соответствии со своей сутью.

Считаю навязывание утратившей актуальность практики программирования начала 90х вредным для сообщества.
mivari; Fox-trot; +2 Ответить
21. Designer1C 345 07.05.19 19:03 Сейчас в теме
(18)
В языках с динамической типизацией тип переменной определяется хранимым в ней значением

А в языках со статической типизацией разве тип переменной определяется префиксом ?
26. TODD22 18 07.05.19 19:18 Сейчас в теме
(21)
А в языках со статической типизацией разве тип переменной определяется префиксом ?

И при чём тут языки со статической типизацией?
27. Designer1C 345 07.05.19 21:17 Сейчас в теме
(26)Языки со статической типизацией, с динамической типизацией в рамках моей статьи, действительно, ни при чём.

Суть статьи изложена в её первом абзаце.

За счёт префикса переменной можно получить достаточное количество переменных для работы с одним понятием.
30. ildary 08.05.19 08:45 Сейчас в теме
(26) Вас просто не слышат - ему это кажется красивым и всё тут.
35. Designer1C 345 09.05.19 18:52 Сейчас в теме
(30)Да-да ! Вас не слышат ! Звук на сайте не передаётся. Зато Вас внимательно читают и хотят понять основную мысль, которую коллеги хотят донести до автора этой заметки, которая адресована программистам - стажёрам.
Но пока наблюдаю неопределённые отсылы к другим ссылкам. Может, текст запроса для поиска на www "наставник" пришлёт Или явно напишет, что хотел сказать.
39. Designer1C 345 09.05.19 19:14 Сейчас в теме
(30)Ему в первую очередь это кажется практичным. А насчёт красивого : да, не без этого. Это лишь следствие, А не причина

Сложно услышать, когда не говорят конкретно, что беспокоит. А намекают то на типы языков с динамической типизацией. То отсылают ещё что-нибудь погуглить.

Такое ощущение, меня пытаются отговорить от того, что удобно мне и что доказало свою пользу.

Может, моя статья пытается кого-то из коллег отговорить от собственного стиля работы с переменными ?
Тогда в чём дело ? Попробуйте объяснить.
48. TODD22 18 10.05.19 03:37 Сейчас в теме
(39)
Такое ощущение, меня пытаются отговорить от того, что удобно мне и что доказало свою пользу.

Никто вас не отговаривает. Продолжайте делать так как вам нравится.
Неужели Вы думаете, что я не читал отзывы по "венгерской нотации" на сайтах, посвящённых 1С ?

1С не единственный язык с динамической типизацией. Внезапно?
И "гуглить "то не знаю что" - какой результат ожидаете ?

От того кто даже не попробовал никакого.
В MS где на сколько я знаю и придумали использовать HN почему то от неё отказались... даже жирным выделили.
https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/general-naming-conventions
у меня многолетний способ применения нотации.

"Да я всегда так делала", "Да мы всегда так работали" и тд. Любой бухгалтер которому сказали что он делает что то не правильно. Но это не аргумент.
венгерская нотация иногда встречается.

Иногда встречается ещё не есть система префиксов. Если бы эта система была из разряда best practics то наверное её использовала бы 1С, она была бы описана в стандартах и ею бы пользовались. В коде можно много чего встретить, его пишут люди. Применить один раз префикс "тз" это не то же самое что писать весь код таким подходом.
И можно спокойно читать исходные тексты любителей венгерской нотации.

Звучит как клуб анонимных ....

Пусть каждый найдёт свой стиль.

Пусть каждый придерживается общепринятых стандартов и практик в конкретной среде и языке.
Такая таблица может храниться в макете отчёта, обработки, общем модуле.

Только надо знать в каком макете или какой обработке она хранится. Внезапно окажется что у 10 программистов 10 разных стандартов префиксации и они работают над одним проектом....
А намекают то на типы языков с динамической типизацией.

Намекают не на "типы", а прямо говорят что тип переменной определяется хранимым в ней значением. И если вдруг окажется что там будет другой тип? Или необходимо в переменную поместить значение другого типа, то придётся создавать ещё одну переменную?
Статья написана для программистов - стажёров.

Не надо учить других плохому.

Для того что бы "помнить" какого типа переменная есть другие подходы.
mivari; A.Sytchev; PLAstic; ildary; boln; +5 Ответить
56. PLAstic 259 13.05.19 09:47 Сейчас в теме
(39) Попробую. Ваша практика программирования удобна именно вам. Хорошо, что вы поделились ей. Выше были отзывы коллег программистов с подобными практиками и они негативные. Вам удобно и вы не думаете об удобстве тех, кто будет ваш код потом сопровождать? Велкам, используйте! Не стОит на каждый коммент отвечать своей пачкой нелепых аргументов "лучше, удобней, короче".
31. Lukich66 82 08.05.19 10:43 Сейчас в теме
Г, за 30лет , еще со времен fox21, взял себе за правило П_ИмяПеременной, на том и держусь.
Варианты СписокКлиентовПорядочных , СписокВредныхРаботниковПоКоторымОбязательноПроизойдетКакойЛи­боСбой
по непонятным причинам не только выговорить, но и написать не могу...
С днем Победы!
33. Designer1C 345 08.05.19 11:22 Сейчас в теме
(31)Да, с Днём Победы ! Для меня это один из самых важных праздников.

За 30 лет - это опыт программирования, видимо ? То есть :
за 30 лет программирования


Как не применяете - это понятно. Я тоже стараюсь быть кратким при создании переменных в разумных пределах.

Хотя в одной моей разработке я был вынужден использовать переменные-словосочетания из 3 и даже 4 слов.

А что означает
П_ИмяПеременной
?

Можете привести несколько примеров ?
59. acanta 13.05.19 10:10 Сейчас в теме
В начале карьеры, как и в конце имхо, следует программировать так, как удобно самому. Сначала набиваем руку, нарабатываем понимание механизмов платформы в каком угодно стиле.
И только затем можно говорить о командной работе, преемниках и удобстве обслуживания вашего кода другими людьми.
Какой смысл пытаться стать полноценным членом команды при отсутствии понимания программы?
Другой вопрос в том что рефакторинг становится сложнее. Его и раньше было сложно обосновать в финансовом плане.
60. TODD22 18 13.05.19 10:19 Сейчас в теме
(59)
Сначала набиваем руку, нарабатываем понимание механизмов платформы в каком угодно стиле.

Ничего не мешает "набивать руку" сразу правильно, чем потом переучиваться.
61. acanta 13.05.19 10:29 Сейчас в теме
(60) ребенок сначала учится говорить, писать каракули и только затем - писать правильно
Вы будете от своего ребенка требовать в год и два месяца грамматически верно произносить прозу Толстого?
То, что программисты взрослые люди не значит что при использовании нового для них языка программирования они должны правильно писать переменные для того чтобы текст был понятен всему коллективу.
Они пишут для 1с. Главное чтобы правильно понимала платформа. Тогда и ошибок будет меньше.
Попробуйте код прочитать вслух.
62. TODD22 18 13.05.19 10:34 Сейчас в теме
(61)Любую ситуацию можно довести до абсурда и придумать любую глупость. В том числе про детей, программистов и прозу Толстого...
К программированию это мало относится.
klinval; user774630; Fox-trot; +3 Ответить
63. herfis 374 13.05.19 11:13 Сейчас в теме
Изначально венгерская нотация была изобретена не от хорошей жизни. Ее использовали в языках программирования с кучей похожих типов (плюс указатели) и статической типизацией, а понимание конкретного типа переменной часто было критичным.
Сейчас венгерскую нотацию практически не используют, по крайней мере - в чистом виде. Потому что современные IDE в таких языках умеют подсказывать тип.
В 7.7 я еще использовал элементы венгерской нотации. Типа "тз", "сз" и так далее. Но в 8-ке стиль работы с коллекциями изменился в лучшую сторону плюс, хочется верить, мой стиль кодирования тоже улучшился. И венгерская нотация лично мне стала неприятна. Без нее код можно сделать более читабельным. Сейчас я использую разве что "м" для переменных модуля, но переменные модуля я тоже практически не использую. Можно сказать, что сейчас я использую элементы венгерской нотации для уточнения смысла в названии переменных ("СтрокаБлаБла", "ЭлементБлаБла", "ТаблицаБлаБла" и так далее). Но это читается естественно и не имеет недостатков венгерской нотации в ее чистом виде.
Если не размазывать контекст, хорошо структурировать код и давать хорошие смысловые имена переменным - в венгерской нотации в чистом виде нет необходимости. Такое мое мнение, к которому я эволюционно пришел :)
67. Designer1C 345 14.05.19 12:53 Сейчас в теме
(63)
Потому что современные IDE в таких языках умеют подсказывать тип.

А как 1С:8 подсказывает тип , если Вы её причисляете к современным IDE ?
Это точку надо поставить после переменной ?

Интересно взглянуть на Ваш стиль программирования на примерах, где применяются таблицы значений, массивы, списки значений, ссылки (справочники, документы) и объекты (справочники, документы).

Правильно говорят : лучше один раз увидеть, чем сто раз услышать.
70. herfis 374 14.05.19 16:07 Сейчас в теме
(67)
А как 1С:8 подсказывает тип , если Вы её причисляете к современным IDE ?
Это точку надо поставить после переменной ?

Это было не про 1С. Это было про причины появления венгерской нотации и причины снижения ее востребованности.
В 1С и большинстве других скриптовых языков все гораздо проще с основными типами. Это часть их концепции (упрощение). Указателей и прочей низкоуровневой шняги тоже нет. Поэтому проблема, для решения которой использовали венгерскую нотацию, изначально остро в них не стояла.
(67)
Интересно взглянуть на Ваш стиль программирования на примерах

Да стандартный стиль. В таком духе:
&НаКлиенте
Процедура ОтобразитьИнформациюОбАкциях(Команда)
	
	ТекущиеДанные = Элементы.ТаблицаПлана.ТекущиеДанные;
	НоменклатураОтбора = Неопределено;
	Если ТекущиеДанные <> Неопределено Тогда
		НоменклатураОтбора = ТекущиеДанные.Номенклатура;
	КонецЕсли;
	
	ФормаСпискаАкций = ПолучитьФорму("Справочник.Акции.ФормаСписка", Новый Структура("ЗакрыватьПриЗакрытииВладельца", Истина), ЭтаФорма, , ВариантОткрытияОкна.ОтдельноеОкно);
	ФормаСпискаАкций.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
	
	СписокВлияющихАкций = Новый СписокЗначений;
	СписокВлияющихАкций.ЗагрузитьЗначения(ПолучитьМассивВлияющихАкций(НоменклатураОтбора));
	
	ЭлементОтбора = ФормаСпискаАкций.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
	ЭлементОтбора.ПравоеЗначение = СписокВлияющихАкций;
	ЭлементОтбора.Использование = Истина;
	
	ФормаСпискаАкций.Открыть();
	
КонецПроцедуры

&НаСервере                    
Процедура РассчитатьИтогиПлана()
	
	МассивДнейПланирования = ПолучитьМассивДнейПланирования(Объект.НеделяПланирования);	
	КоличествоДнейПланирования = МассивДнейПланирования.Количество();
	
	// рассчитаем итоги по строкам
	
	Для Каждого СтрокаПлана Из ТаблицаПлана Цикл
		КвоРасчетИтог = 0; КвоПланИтог = 0;
		Для НомерДня = 1 По КоличествоДнейПланирования Цикл
			КвоРасчетИтог = КвоРасчетИтог + СтрокаПлана["КвоРасчет"+НомерДня];
			КвоПланИтог = КвоПланИтог + СтрокаПлана["КвоПлан"+НомерДня];
		КонецЦикла;
		СтрокаПлана.КвоРасчетИтого = КвоРасчетИтог;
		СтрокаПлана.КвоПланИтого = КвоПланИтог;
	КонецЦикла;
	
	// рассчитаем итоги по колонкам
	ОтмеченныеСтроки = ТаблицаПлана.Выгрузить().Скопировать(Новый Структура("Пометка", Истина));
	
	Для НомерДня = 1 По КоличествоДнейПланирования Цикл
		Элементы["ТаблицаПланаКвоРасчет"+НомерДня].ТекстПодвала = Формат(ОтмеченныеСтроки.Итог("КвоРасчет"+НомерДня),"ЧЦ=14; ЧДЦ=0");
		ЭтаФорма["КвоПланИтого" + НомерДня] = ОтмеченныеСтроки.Итог("КвоПлан"+НомерДня);
	КонецЦикла;
	
	Элементы["ТаблицаПланаКвоРасчетИтого"].ТекстПодвала = Формат(ОтмеченныеСтроки.Итог("КвоРасчетИтого"),"ЧЦ=14; ЧДЦ=0");
	КвоПланИтого = ОтмеченныеСтроки.Итог("КвоПланИтого");
	
КонецПроцедуры

&НаСервере
Функция ЗаписатьЗаказНаСервере(СтруктураОтчета)
	
	Подразделение = УправлениеОтчетамиКлиентСервер.ПолучитьПредопределенныйПользовательскийОтбор("Подразделение", Отчет.КомпоновщикНастроек).ПравоеЗначение;
	Если НЕ ЗначениеЗаполнено(Подразделение) Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Необходимо указать подразделение");
		Возврат Ложь;
	КонецЕсли;
	
	Дата = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("ДатаПоставки", Отчет.КомпоновщикНастроек).Значение.Дата;
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ЗаказФилиала.Ссылка,
	|	ЗаказФилиала.Утвержден
	|ИЗ
	|	Документ.ЗаказФилиала КАК ЗаказФилиала
	|ГДЕ
	|	ЗаказФилиала.Дата = &Дата
	|	И ЗаказФилиала.Подразделение = &Подразделение";
	Запрос.УстановитьПараметр("Дата", Дата);
	Запрос.УстановитьПараметр("Подразделение", Подразделение);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Заказ = Выборка.Ссылка.ПолучитьОбъект();
		Если Выборка.Утвержден Тогда
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Заказ филиала уже утвержден. Необходимо отменить утверждение перед изменением заказа");
			Возврат Ложь;
		КонецЕсли;
	Иначе
		Заказ = Документы.ЗаказФилиала.СоздатьДокумент();
		Заказ.Дата = Дата;
		Заказ.Подразделение = Подразделение;
	КонецЕсли;
	
	ДанныеРасшифровкиОтчета = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
	
	Заказ.Заказ.Очистить();
	Для Каждого СтрокаНоменклатуры Из СтруктураОтчета.СтрокиНоменклатуры Цикл
		
		Если СтрокаНоменклатуры.Значение = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		Если СтрокаНоменклатуры.Значение.Заказ = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		Номенклатура = УправлениеОтчетами.ПолучитьСтруктуруПолейРасшифровки(ДанныеРасшифровкиОтчета.Элементы[СтрокаНоменклатуры.Ключ]).НоменклатурнаяГруппа;
		
		СтрокаЗаказа = Заказ.Заказ.Добавить();
		СтрокаЗаказа.Номенклатура = Номенклатура;
		СтрокаЗаказа.Заказано = СтрокаНоменклатуры.Значение.Заказ;
		
	КонецЦикла;
	
	Заказ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
	
	Возврат Истина;
	
КонецФункции
Показать

(68)
Насколько я помню, в Си просто компилятор выдал бы ошибку.

Речь о читабельности кода, а не о поиске ошибки в компайл-тайме. Притом ведь использовалось и явное приведение типов и другие хитрые ситуации были позволяющие легко отстрелить себе ногу, когда компилятор не поможет. И без понимания исходного типа разбираться было сложно. А в 1С чтобы промазать с типом нужно весьма постараться. Их же минимум-миниморум. Не, если вы даете имена переменным в стиле "сА1" и "дтА2" - тогда конечно, явное указание типов весьма пригодится.
68. Designer1C 345 14.05.19 12:56 Сейчас в теме
(63)
а понимание конкретного типа переменной часто было критичным

Насколько я помню, в Си просто компилятор выдал бы ошибку. Пришлось бы потратить время на исправление выражения в исходном тексте.
В 1С нет статической типизации и поэтому свой промах с типом переменной требует значительного времени, чтобы найти эту ошибку.
69. TODD22 18 14.05.19 14:00 Сейчас в теме
(68)ВН не избавляет от "промахов" с типом переменной, а иногда и усугубляет ситуацию, когда вы ожидаете тип из префикса, а там оказывается другой тип. Если сомневаетесь в типе переменной то проверяете его явно и обрабатываете исключением, а не ждёте когда в рантайме вывалится ошибка.
(67)
Правильно говорят : лучше один раз увидеть, чем сто раз услышать.

Откройте современную типовую(УТ11, ЗУП3 и тд), соглашения по написанию кода с ИТС и смотрите как там код пишут и не забывайте про "здравомыслие" что бы не впадать в крайности. Типа "вот тут 1Сники отошли от стандарта" значит можно весь код писать как попало.

Как то взяли разработчика, первым делом дали ему стандарты и соглашения по написанию кода, мы же всё таки в команде работаем. Так вместо того что бы учится писать по правилам принятым 1С и в той компании где мы все работали он(как и вы с примером из УПП) искал отклонения от стандартов в типовых и всем кругом говорил смотрите 1Сники не соблюдают стандарты по этому и он не обязан.
А свой говнокод называл "собственным стилем и виденьем художника".... через месяц был уволен...
64. user681872_kuleshov.av 13.05.19 11:50 Сейчас в теме
Правильно, чем потом писать тонны инструкций, лучше изначально продумать, всё верно
71. herfis 374 14.05.19 16:25 Сейчас в теме
И еще один ньюанс.
Нужно отличать системное программирование (в т.ч. близкое к железу) от программирования бизнес-логики.
В программировании бизнес-логики с переменными красота - они почти всегда отражают конкретные аспекты бизнес-области. В итоге им можно давать "говорящие" имена, которые автоматически закрывают многие вопросы. В системном программировании не так. Там больше на математику с физикой похоже. Это еще одна причина, почему вопрос понимания типов в С/С++ стоял более остро (сами же win api упоминали в первую очередь).
73. ManyakRus 409 14.10.19 10:07 Сейчас в теме
"Венгерскую нотацию" надо использовать конечно :)
но вы своими неудобными префиксами всё извратили в худшую сторону.
Префикс - это необязательно 1-2 буквы.
Префикс "Массив" - это тоже префикс.
Префиксы:
"мс" - надо "Массив"
"тз" - надо "ТЗ"
и др.

"Казахская нотация" ито намного лучше ваших префиксов, но устарел
FreeArcher; +1 Ответить
74. LimarenkoA 31.01.20 08:43 Сейчас в теме
Очень крутой способ написания кода! В индустрии не долго, но теперь понимаю зачем так было написано. Буду сам пользоваться и покажу коллегам, спасибо за статью!
Designer1C; +1 1 Ответить
75. lmnlmn 64 31.01.20 08:57 Сейчас в теме
(74) Крутой это вовсе не значит что хороший. Хотя дозированное применение вполне оправдано в некоторых случаях.
76. LimarenkoA 31.01.20 09:02 Сейчас в теме
(75) по крайней мере можно повысить читабильность для других разработчиков. Хотя для тех кто с этим не знаком всё равно будет не понятно для чего нужны префиксы.
77. lmnlmn 64 31.01.20 09:15 Сейчас в теме
(76) В статье приведен весьма скромный список префиксов для типов данных в 1С. Причем типы взяты "простые" и не ясны совершенно причины подобной избирательности автора. Если уж вам так понравилась концепция, то почему же не использовать префиксы для всего? Какие тогда префиксы понадобятся для "МакетОбластиМакетаКомпоновкиДанных" и прочих "длинных" типов коих больше сотни и повысит ли это "читабельность"? Вообще префиксы "читабельность" снижают, но могут в некоторых случаях повысить "понимабельность" ))
78. LimarenkoA 31.01.20 10:40 Сейчас в теме
(77) Полностью с вами согласен, список не велик, но и конечно для мелких процедур с маленьким перечнем переменных, это не нужно. Но для объемных с большим количество переменных это будет удобнее.
Для всего будет тяжело использовать, но для примитивных типов самое то. Чаще всего конечно стараюсь чтобы название несло в том числе и смысловую нагрузку. Самый простой пример, это когда мы получаем например по ссылке объект, я всегда пишу например "ДокОбъект = ДокСсылка.ПолучитьОбъект()", чтобы в дальнейшем понимать что ссылка, а что объект. Всегда всё зависит от контекста задачи, конфигурации. В своё время очень помогли стандарты разработки представленные на сайте its. Всегда придерживаюсь этих стандартов)
79. herfis 374 31.01.20 15:21 Сейчас в теме
(78)
Всегда придерживаюсь этих стандартов)


1. Имена переменных следует образовывать от терминов предметной области таким образом, чтобы из имени переменной было понятно ее назначение.

2. Имена следует образовывать путем удаления пробелов между словами. При этом, каждое слово в имени пишется с прописной буквы. Предлоги и местоимения из одной буквы также пишутся прописными буквами.
Пример:

Перем ДиалогРаботыСКаталогом; // Диалог работы с каталогом
Перем КоличествоПачекВКоробке; // Количество пачек в коробке

Примеры некорректных имен переменных:

масРеквизитов, соотвВидИмя, новСтр
80. herfis 374 31.01.20 15:27 Сейчас в теме
(78) ДокОбъект и ДокСсылка - это скорее исключение, так как это обычно имена временных переменных на коротком и понятном отрезке кода, а не сущностей с "большим смыслом". Сам иногда поступаю похожим образом.
Вводить же полноценную венгерскую нотацию - это жесть жестяная. Она нифига не улучшает читабельность, она ее ухудшает. В 1С этих несчастных типов данных, которые часто используются - полторы штуки. При грамотных именах переменных в 99% случаев из имени и контекста и так все понятно, при этом код читается как проза, без спотыканий на этих тз, сп, бпвмф и так далее.
81. LimarenkoA 31.01.20 15:40 Сейчас в теме
(80) Судя по вашему профилю вы в индустрии давно, пожалуй я к вам прислушаюсь))
83. herfis 374 31.01.20 16:37 Сейчас в теме
(81) "Давно в индустрии" - это нифига не показатель. Оперируйте только фактами и прислушивайтесь к своим ощущениям. Можете попробовать поискать хороший ЧУЖОЙ код в венгерской нотации и хороший ЧУЖОЙ код без оной. И оцените читабельность. Почему именно чужой? Потому что свой СВЕЖИЙ код читать смысла нет - у вас и так вся картинка уже в голове и вы код не "парсите". А вот через пол-годика ваш собственный код как раз и будет как чужой.
Когда-то на 7.7 я по-молодости использовал элементы венгерской нотации. Тогда многие так делали. Возвращаться не хочется :)
А факты таковы - венгерская нотация была популярна для Си, в те времена когда легко и просто типы переменных было понять сложно (не было хороших IDE, помогающих в этом), а видов примитивных типов данных там была куча мала. В 1С не сказать что конфигуратор сильно помогает с типами данных, но и проблема такая остро вовсе не стоит. Вот если бы "КоличествоТовара" могло иметь 20 разных типов и различать их было бы критично важно - тогда был бы другой коленкор.
82. ImHunter 202 31.01.20 16:08 Сейчас в теме
(80) Кстати, насчет кода, как прозы и спотыканий - недавняя статья хабра.
Ну а по теме... Такие префиксы вроде бы не пропустятся на 1С-Совместимость. И если есть прямо реальная польза от таких префиксов, то это говорит об излишней когнитивной сложности кода.
Оставьте свое сообщение

См. также

Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо

Администрирование данных 1С Мобильная разработка v8 Бесплатно (free)

Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.

14.04.2017    61780    user700211_a.straltsou    27    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    28573    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    25130    John_d    22    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    34512    Yashazz    50    

Копирование числовых ячеек из 1С в Excel Промо

Загрузка и выгрузка в Excel Администрирование данных 1С v8 1cv8.cf Бесплатно (free)

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

15.01.2019    25468    itriot11    26    

Самый примитивный HTTP-сервис в мире

WEB v8 Бесплатно (free)

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    21844    YPermitin    26    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    52721    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    51033    ids79    54    

Обмен данными. Консистентность vs Многопоточность Промо

Интеграция v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    12518    m-rv    1    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    86759    ids79    49    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    62580    ids79    12    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    54334    AlbinaAAA    28    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37612    unichkin    74    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    54098    ids79    25    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    42539    YPermitin    52    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16147    m-rv    2    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30703    tormozit    100    

Как настроить правильную техподдержку (helpdesk, service desk на коленке)

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени Управление взаимоотношениями с клиентами (СRM) Документооборот и делопроизводство Монитор заказов Учет рабочего времени v8 УУ Бесплатно (free)

Эта статья будет полезна для компаний, которые оказывают техническую поддержку своим пользователям - внешним или внутренним клиентам. В статье я расскажу, как оказываем поддержку мы, как выстроили этот бизнес-процесс, что контролируем и на что обращаем внимание в работе. Вы можете использовать наш опыт при построении собственной системы поддержки или обратиться к нам за помощью за построением такой системы, будем рады помочь. В статье формируется основной набор правил, которые мы сформировали при настройке системы для себя, а так же небольшие примеры того, как мы эти правила применяем.

24.04.2019    18599    siddy    0    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    20438    m-rv    17    

Excel vs 1С: битва с неожиданным исходом

Анализ учета Универсальные обработки Загрузка и выгрузка в Excel Финансовые Управленческие v8 1cv8.cf Россия Бесплатно (free)

Что лучше 1С или Excel? Разберемся, в казалось бы, очевидном, чтобы получить невероятное!

11.04.2019    36753    bolefirenko    117    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    78298    tormozit    131    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    35852    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27665    ellavs    90    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48772    tormozit    41    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    42237    ids79    72    

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке

Универсальные функции Зарплата Управление персоналом (HRM) Зарплата v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    91731    GeterX    121    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    35322    ids79    40    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    45156    tormozit    74    

Git + 1С. Часть 1. Как подключиться к команде разработки и начать использовать Git

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

Первая статья из цикла инструкций по работе с Git в 1С-разработке. Рассмотрим, как настроить рабочее место, как получить свою "копию" проекта для разработки и приступить к полезным действиям. Все примеры будут изложены в рамках трёх практических кейсов: 1. Моя команда дорабатывает типовую конфигурацию, использует приватный репозиторий на BitBucket, в котором версионируются внешние отчеты/обработки, расширения конфигураций и правила обмена; 2. Я участвую в стартап-команде, которая разрабатывает свою конфигурацию с использованием Git и GitLab; 3. Я принимаю участие в развитии OpenSource-продукта на GitHub как заинтересованный разработчик (контрибьютор).

18.10.2018    68822    stas_ganiev    75    

Планы обмена 1С

Перенос данных из 1C8 в 1C8 Интеграция v8 Бесплатно (free)

В статье - мастер-классе Дмитрий Жичкин рассказывает, для чего нужны планы обмена 1С и какие задачи они решают. Он подробно описывает физическую структуру планов обмена и механизмов регистрации изменений, рассматривает основные проблемы, возникающие при выгрузке изменений и предлагает методы их решения.

10.09.2018    61138    zhichkin    31    

Из Excel в 1С запросом

Загрузка и выгрузка в Excel v8 1cv8.cf Бесплатно (free)

... ну, конечно, не прям так типовым языком запросов, а расширенным языком запросов. Речь пойдет о том, как "залить" данные в таблицы 1С и не пилить при этом бесконечного количества наколеночных обработок.

14.08.2018    20154    m-rv    5    

Тестер: частые вопросы

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29436    grumagargler    28    

Повышаем эффективность разработки правил обмена

Практика программирования Перенос данных из 1C8 в 1C8 v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    28516    olegtymko    47    

Как сделать запрос на изменение данных

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30982    m-rv    21    

Строим графы средствами 1С (без GraphViz)

Практика программирования v8 Бесплатно (free)

Множество статей на Инфостарте описывают, как работать с компонентой GraphViz, чтобы построить ориентированный граф. Но практически нет материалов, как работать с такими графами средствами 1С. Сегодня я расскажу, как красиво строить графы с минимальным пересечением. Нам этот метод пригодился для отрисовки алгоритмов в БИТ.Финансе, т.к. типовой механизм не устраивал. Еще это может быть полезно для визуализации различных зависимостей: расчета себестоимости, графы аффилированности компаний и т.д. Надеюсь, эта статья поможет сделать мир 1С красивее и гармоничней:) Итак, поехали...

23.05.2018    24321    slozhenikin_com    20    

Распределение расходов пропорционально продажам

Финансовый учет и бюджетирование (FRP) Учет доходов и расходов Практика программирования Финансовый учет и бюджетирование (FRP) Учет доходов и расходов v8 v8::ОУ УТ10 УУ Бесплатно (free)

Финансовая модель. Распределение административных расходов по подразделениям пропорционально продажам за месяц. Дополнительные реквизиты против бизнес-процессов!

13.05.2018    18267    Rustig    9    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники

Перенос данных из 1C8 в 1C8 v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    23344    V.Stavinsky    11    

[ВсеПросто] "Оперативный" информатор из 1С за 5 мин.

Практика программирования v8 Бесплатно (free)

Быть всегда в курсе дел, даже в дороге!

22.02.2018    26461    DarkAn    25    

Минимализмы 3

Практика программирования Универсальные функции v8 Бесплатно (free)

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    46844    ildarovich    45    

Этюды по программированию. Взаимодействие с Microsoft Word

Практика программирования v8 Бесплатно (free)

Часто приходится заниматься созданием сложных документов Word с таблицами, вложенными фрагментами, хитрым оформлением и прочими радостями жизни. Это - попытка как-то структурировать полученный опыт, чтобы не приходилось перерывать ворох старых обработок в поисках крупиц истины. Надеюсь, эта статья будет полезна и Вам.

11.12.2017    32301    milkers    23    

Метод формирования движений в типовых регистрах нетиповыми регистраторами

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28384    itriot11    34    

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена)

Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML v8 КД Бесплатно (free)

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    196316    MaxS    299    

Обзор имеющихся библиотек OneScript

OneScript v8 Бесплатно (free)

Экосистема OneScript активно развивается. Количество пользователей данного интерпретатора и имеющихся библиотек неуклонно растет, количество решаемых проблем - тоже. Однако остро встает вопрос некоторой разобщенности и размазанности информации по имеющимся библиотекам, их функциональности и проблемам, которые они решают. Данная статья призвана навести порядок в этой теме.

14.11.2017    44557    nixel    87    

Программные перечисления, ч.2: приемы кэширования при разработке

Практика программирования v8 Бесплатно (free)

Все знают, что такое кэш, и зачем он нужен. Но в 1С разработчик обычно использует кэширование только на уровне конфигурации, а в какой-нибудь обработке скорее ломает голову над запросом - как получить все данные за один заход... Хочется рассказать о том, как можно добиться хороших результатов с стратегией "разделяй и властвуй".

30.10.2017    26752    unichkin    18