Вход | Регистрация

  1  2  3  4
1С:Предприятие :: 1С:Предприятие 8 общая

Правила именования переменных

Правила именования переменных
Я
   svsvsv
 
26.09.17 - 13:17
4. Без правил, как хочу, так и пишу36% (4)
3. Без префиксов, по стандартам 1С (КамелКасе)27% (3)
1. Префиксы по области видимости (п, л, м, гл, ...)18% (2)
2. Префиксы по типу данных (сз, тз, м/мас, ...)18% (2)
Всего мнений: 11

Коллеги, кто-то из вас придерживается стандартов разработки (в части оформления кода) с сайта ИТС?

И второй вопрос, если нужно добавить переменную в типовом модуле, ставите ли какие-то префиксы/постфиксы у таких переменных?

И третий вопрос, в наименованиях параметров собственных процедур и функций, используете ли префикс "п" (например, Функция ЧислоПростое(пЧисло) )?
 
 
   Лефмихалыч
 
301 - 27.09.17 - 16:29
(300) вот рифма так и прёть...
   X Leshiy
 
302 - 27.09.17 - 16:30
(301) Триста - префикс тракториста! :)
   romix
 
303 - 27.09.17 - 16:32
(292) А что не так с переменной Адрес - какому пункту правил 1С она не соответствует?
https://its.1c.ru/db/v8std#content:2149184103:hdoc

Добавление новых переменных в код должно идти с префиксом:

сАдрес, стрАдрес, пАдрес, лАдрес

Потом рефакторить (Ctrl+Alt+R). В контексте формы и объекта требуется оставлять так - по крайней мере, на текущей реализации движка 1С - иначе будет много проблем с пересечениями.

Таково мое мнение - думаю, что в этом отношении поменяются либо правила 1С (интересно, кто их писал - разработчики ли), либо изменят движок, чтобы разграничить контексты имен.
   Филиал-msk
 
304 - 27.09.17 - 16:46
(301)
Да тут все давно уже ясно и прозрачно... Корни-то у "проблемы" растут из того, что 99.9(9)% "разработчиков"
не разрабатывают свое а допиливают существующее за старшими товарищами. Как со времен студенчества во франчайзи пошло, так и продолжатся, отчаянная боязнь "как бы что не того".

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

И не мешает ему это ни-че-го.

Но таких мало.

И раздается по округе... А мы! Мы тоже можем! Венгерская нотация! Авторские комментарии! Иванов Иван Иванович, 1 апреля, 44 размер ноги! Фирма 1С поменяет свои правила! Изменят движок! Гитхаб! Подвернутые носки!

Тьфу.
   romix
 
305 - 27.09.17 - 16:48
Пишу без правил (но единообразно) переменные цикла-выборки и структуры-параметры.

Длинные имена смотрятся не эстетично и заполняют ширину экрана (когда их много).

Имена типа ВыборкаДетальныеЗаписи - подойдут любителям печатать (и читать) много букв.

4. Без правил, как хочу, так и пишу
   Филиал-msk
 
306 - 27.09.17 - 16:50
(305) Тяжело выбрать из (291) (295) и (305) что-нибудь одно, да?
   Господин ПЖ
 
307 - 27.09.17 - 16:51
пишу (1 + 2)

ибо нужно отделять локальные переменные и увы нет жесткой типизации

стандарты 1с в этом аспекте крайне странные - их отказ от венгерской нотации уже несколько раз выходил граблями по спине. банально в коде обработки есть Пользователи = блабла. А в новой типовой есть общий модуль Пользователи - улыбаемся и машем
   ildary
 
308 - 27.09.17 - 16:54
(307) а еще было Пользователь->глПользователь->ТекущийПользователь->Пользователи.АвторизованныйПользователь()
   Лефмихалыч
 
309 - 27.09.17 - 17:00
только заметил голосовалку.
обосновываю свой выбор в (2)


(307) ну, такое иногда бывает, да. Но префиксы от этого - это как презерватив из бересты. Может и надежно, но ощущения не те

3. Без префиксов, по стандартам 1С (КамелКасе)
   dezss
 
310 - 27.09.17 - 17:00
(288) да-да...а он что, на русском пишет?
 
 Рекламное место пустует
   Филиал-msk
 
311 - 27.09.17 - 17:02
Если пристально посмотреть на типовые, то окажется, что 1с внутри себя использует суффиксы. ОбщегоНазначенияБПО, вот это все.

Но это надо смотреть и думать. А мы не такие! Венгерская нотация! А вот Я пишу!
   drcrasher
 
312 - 27.09.17 - 17:05
в данный момент деваться некуда, у меня отраслевая конфа, приходится соблюдать стандарты. но чем дольше я их соблюдаю, тем они кажутся логичнее. и это не только про переменные и прочие наименования, но и про структурирование.

3. Без префиксов, по стандартам 1С (КамелКасе)
   dezss
 
313 - 27.09.17 - 17:06
Забыл проголосовать.

3. Без префиксов, по стандартам 1С (КамелКасе)
   Лефмихалыч
 
314 - 27.09.17 - 17:08
(282) ты странненький.
1. Где в моем посте ты нашел что-то про фирму 1С?
2. Которые код копируют, у тех тоже писюны вместо пальцев. Когда копируешь код, имеешь потенциальные проблемы безотносительно к именованию чего-либо. Так просто нельзя делать.
Имена переменных циклов для каждого - всегда осмысленные. Для циклов со счетчиком я иногда допускаю СчЦ и Сч. Редко. Ибо не люблю циклы со счетчиком.
3. Не имею я таких проблем. Возможно я что-то делаю не так, но вот - не имею.
   Fish
 
315 - 27.09.17 - 17:14
(314) Блин. Тебя почитаешь, стрёмно за руку с коллегами здороваться :))
   Лефмихалыч
 
316 - 27.09.17 - 17:15
(315) ну, или не читай, или не здоровайся. Выбор за тобой :)
   romix
 
317 - 27.09.17 - 17:20
(309) Каким именно ощущениям мешают префиксы?
Рациональной причиной может быть перевод на другой язык по словарику, но словарик можно и дополнить типовыми префиксами.

(314) 2. Этого требования не существует. Кто должен это требование угадывать, и на каком основании? Все без исключения копируют код, если же движок 1С отрабатывает это неадекватно - то это неадекватный движок.

Осмысленные переменные цикла = говнокод. В самих же стандартах сказано, что они могут быть однобуквенными (пункт 4).
https://its.1c.ru/db/v8std#content:2149184103:hdoc
   X Leshiy
 
318 - 27.09.17 - 17:22
(317) прЕфиксыВыглядаятНеКрасиво!
   Филиал-msk
 
319 - 27.09.17 - 17:23
(317) И снова тоненькая такая подмена...Ты слова "могут" и "должны" различаешь, турист?
   Филиал-msk
 
320 - 27.09.17 - 17:24
(318) Кстати от цветовой схемы зависимость интересная может быть
   X Leshiy
 
321 - 27.09.17 - 17:25
Кстати, ссылочные типы именовать: КонтрагентСсылка, КонтрагентОбъект кошерно?
   Филиал-msk
 
322 - 27.09.17 - 17:26
(321) Типы-то у 1С как раз с разделителем - СправочникСсылка.Контрагенты. Или ты про переменные типа "тип"
   Филиал-msk
 
323 - 27.09.17 - 17:26
?
   Лефмихалыч
 
324 - 27.09.17 - 17:27
(317) общего языка мы здесь не найдем. По префиксам я уже всё сказал в (210). Они засоряют код и дают иллюзию самодокументируемости. Реально человеку, который будет читать твой говнокод с префиксами после тебя, плевать, что там за типы, ему будет важен будет смысл хранящихся там значений.
   X Leshiy
 
325 - 27.09.17 - 17:27
(322) Например
Для Каждого КонтрагентСсылка Из КонтрагентыВыборка Цикл
   
   КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();

КонецЦикла;
   Лефмихалыч
 
326 - 27.09.17 - 17:28
(321) в коде, где ты создаешь объекты, это допустимо - так легче понять, что в базу пишет, а что только читает.
Мое ИМХО.
   Филиал-msk
 
327 - 27.09.17 - 17:30
(325) В общем случае 1С рекомендует избавляться от "незначащих" слов, то есть "Ссылка" тут "по умолчанию" лишнее. Контекст использования обычно решает.
   Филиал-msk
 
328 - 27.09.17 - 17:30
(326) Вот да, хороший пример контекста
   Лефмихалыч
 
329 - 27.09.17 - 17:30
(325) КонтрагентыВыборка в данном случае - наигралово. Это не выборка. Так делать не кошерно ни фига.
   X Leshiy
 
330 - 27.09.17 - 17:31
(326) Ну я потому так и пишу :)

И если изменяешь тоже, объекты.

Мое ИМХО.

(329) Да я как пример написал :)
   Лефмихалыч
 
331 - 27.09.17 - 17:31
(327) да вот в данном случае-то как раз имеет смысл слово Ссылка. Если код в цикле больше 10 строк, то легко потом спутать, который из контрагентов для записи, а который для чтения, нужно постоянно прыгать по коду глазами.
   X Leshiy
 
332 - 27.09.17 - 17:33
(327) Ага, а потом попробуешь КонтрагентКакойТо.Записать(), а он ссылочный :)
   Филиал-msk
 
333 - 27.09.17 - 17:33
(331) Неа. Имеет смысл "Объект". Там по дальнешему напихиванию данных станет понятно, что идет подготовка элемента справочника и записи. А то, откуда ты этот объект достал - уже не важно
 
 
   Господин ПЖ
 
334 - 27.09.17 - 17:34
(317) >Осмысленные переменные цикла = г.внокод.

они тогда и жить должны как в нормальных языках - в пределах цикла
   X Leshiy
 
335 - 27.09.17 - 17:35
(333) Да блин! :)
КонтрагентОбъект = Выборка.КонтрагентСсылка.ПолучитьОбъект();

Полегчало? :))))
   Филиал-msk
 
336 - 27.09.17 - 17:36
КонтрагентОбъект = Выборка.Контрагент.ПолучитьОбъект();

Теперь да (:
   Лефмихалыч
 
337 - 27.09.17 - 17:36
(333) да, согласен
   X Leshiy
 
338 - 27.09.17 - 17:37
(337) см. (335)
   Филиал-msk
 
339 - 27.09.17 - 17:39
(334)

int i = 10;
while (i > 0) {
    if (check() == 0) {
      i = -1;
      break;
    }
    i--;
}
if (i==0) {
   ...
}

Да ну, ненормальный язык какой-то
   romix
 
340 - 27.09.17 - 17:47
(318) Ага.


   ejikbeznojek
 
341 - 27.09.17 - 17:54
Папа=ТекНоменклатура.родитель;
Дедушка=Папа.родитель;
Прадедушка=Дедушка.родитель;
   X Leshiy
 
342 - 27.09.17 - 17:56
(341) Сука=НаписавшийТакойКод;
   ejikbeznojek
 
343 - 27.09.17 - 18:00
(342) Там ещё внучки, жучки и репки есть)))
   Господин ПЖ
 
344 - 27.09.17 - 18:01
(339) для танкистов - ты счетчик создал за пределами цикла. что сказать то хотел?
   Филиал-msk
 
345 - 27.09.17 - 18:15
(344) Это все еще счетчик цикла или для тебя уже "переменная, определенная..." ?
   romix
 
346 - 27.09.17 - 18:27
   Филиал-msk
 
347 - 27.09.17 - 18:29
   Господин ПЖ
 
348 - 27.09.17 - 18:39
(347) вот-вот. посмотри... откроешь много нового
   dezss
 
349 - 28.09.17 - 10:07
и все?
всего на 4 странички вайна?
Да и тема постфиксов почти не раскрыта.
 
 Рекламное место пустует
   Господин ПЖ
 
350 - 28.09.17 - 10:08
постфиксы это совсем глупо
   Лефмихалыч
 
351 - 28.09.17 - 10:10
(350) хорошая попытка
   Мэс33
 
352 - 28.09.17 - 10:10
Пишу как хочу. Обычно проекты на 1С долго не живут, все равно "все перепишут" )))

4. Без правил, как хочу, так и пишу
   Лефмихалыч
 
353 - 28.09.17 - 10:11
(352) не живут, если писать вот так (7)
   Мэс33
 
354 - 28.09.17 - 10:13
(353) так и пишем.Везде, оставляя тонны какашек за собой.
   dezss
 
355 - 28.09.17 - 10:14
(354) Франч?)))
(350) перед "это" тире надо бы поставить.
А почему глупо?
   ildary
 
356 - 28.09.17 - 10:15
(354) Писать надо так, как будто код будет читать маньяк, знающий твой домашний адрес.
   Мэс33
 
357 - 28.09.17 - 10:15
(355) вольнонаемный ))). 1С - как хобби. Основная работа на другом стеке технологий.
   Мэс33
 
358 - 28.09.17 - 10:16
(356) адрес не оставляю )).
   ildary
 
359 - 28.09.17 - 10:17
(358) мы все равно до тебя доберемся (натачивая топор)
   Мэс33
 
360 - 28.09.17 - 10:18
(359) все равно не буду переписывать ))).

Работает же?
   Филиал-msk
 
361 - 28.09.17 - 10:18
(358) Это уже не требуется, Болатбек Жумабаевич (:
   Мэс33
 
362 - 28.09.17 - 10:19
(361) это я никогда не прятал ).
Без проблем.
   Мэс33
 
363 - 28.09.17 - 10:28
На своей памяти нигде не встречал, чтобы франч (сталкивался как минимум с 4мя) соблюдал какое-нибудь соглашение о коде и писал одинаково.
Ко мне в компанию могли прийти несколько разных прогеров из одного и того же франча и писать совершенно по-разному.
   dezss
 
364 - 28.09.17 - 10:29
(363) потому и спросил, не франч ли ты)))
   Мэс33
 
365 - 28.09.17 - 10:31
(364) не, я чаще бывал на стороне заказчиков.
Во франче на 7.7 работал лет где-то 13 назад.
На 1С я сам редко пишу. Только если очень просят что-то доработать.
   Филиал-msk
 
366 - 28.09.17 - 10:31
(363) Уточню (356):
... код твоих разработчиков будет читать маньяк, знающий адрес твоей фирмы (:
   Мэс33
 
367 - 28.09.17 - 10:33
(366) у нас таких маньяков просто...просто нет.
Крутые 1Сники сидят тихонько в теплых местах и пилят годами нетленку.
Во-вторых, очень часто даже если видишь написанную какашку, то вряд ли пойдешь искать автора ))), а просто для заказчика увеличишь цену на "ну надо разобраться, что тут налабали".
   romix
 
368 - 28.09.17 - 13:27
(210) >венгерская нотация - отстой времен палеолита. Ни чего не дает, только время отнимает и раздувает код. В особенности - для языков с не строгой типизацией.

1) Дает отстройку от имен 1С и реквизитов (платформа, общие модули), реквизитов объекта и формы (их имена пишутся по стандарту). В том числе, и еще не добавленных.

2) Ускоряет ввод длинных имен через автозавершение (скажем, Контрагенты и тзКонтрагенты - в последнем случае набираете тзк и имеете либо совпадение, либо короткий список выбора).

Другая альтернатива - перечислять в Перем - но тогда было бы логично требовать обязательности этого перечисления. Либо как у Go - инициализирующее присваивание.

>Сильно веселящими получаются булевские переменные.
бЭтоБрак Читается, как "Б*%№дь! Это брак!" 

Можно префикс а - аЭтоБрак (кто такой Буль, если логику, включая троичную, придумал Аристотель), либо по области видимости. Либо не забыть про Перем.

>Эти префиксы дают иллюзию самодокументируемости, нагружая при этом программистов бестолковой вознёй.

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

В принципе, программист может использовать такие имена на ранних этапах написания кода (чтобы уменьшить клавиатурный ввод и возвраты курсора вверх к описанию Перем, а потом переименовывать "рефакторингом" под стандарт и расставить всё новое в Перем).
   romix
 
369 - 28.09.17 - 13:36
Для стандартных имен возникнет еще и проблема плохо читаемого кода - читатель не видит, какому контексту принадлежит то или иное имя - реквизит ли это, общий модуль или локальная переменная. Описание Перем или объявление переменной дают такое понимание - но к ним надо возвращаться, прокручивая курсор вверх, либо помнить весь объем имен (включая платформу, БСП, реквизиты и объявления вверху функции). Поэтому префиксы существенно разгружают разработчика и никого не надо к их применению принуждать. Почему принуждают к обратному и кто эти люди (разработчики ли они сами или, скажем, администраторы-эстеты, которые сами не кодят) - мне не до конца понятно.
   infosoft-v
 
370 - 28.09.17 - 14:22
(368) Коллега, полностью согласен с вашими выводами. Исходя из аналогичных предпосылок разработали "внутренний стандарт" префиксации и придерживаемся его в разработке.

Использование префиксов совместно с использованием принципов защитного программирования сильно уменьшили количество ошибок в коде. Искать ошибки стало гораздо проще.

2. Префиксы по типу данных (сз, тз, м/мас, ...)
   Лефмихалыч
 
371 - 28.09.17 - 15:53
(368)
1. я тебе отвечал уже на это.
2. Это бред. ОДИНАКОВЫЕ префиксы не могут ни чего ускорять.
О каком вообще уменьшении ввода ты ведешь разговор, когда предлагаешь вводить с клавиатуры ДОПОЛНИТЕЛЬНЫЕ буквы к имени переменной?
   romix
 
372 - 28.09.17 - 16:25
(371) 1. И кто из кодеров (а не руководителей над ними) разделяет этот ответ?

2. Это на практике проверяется - есть частотность слов, букв. Набираете Ко - получаете половину словаря (Контрагент, Колонка, Корова, КонецДня, КонецГода, КонецПериода, Количество...).

Набираете тз - получаете только тз. Сколько их может быть в функции - одна или две. У вас же в личной карточке есть это сокращение.

Род занятий: из ХЗ делаю ТЗ


Расшифруете полным текстом? Вот то-то и оно, сразу потеряется весь шарм.
   romix
 
373 - 28.09.17 - 16:32
+(368) "Постоянными предметами изучения были для Буля метафизика Аристотеля..."
https://ru.wikipedia.org/wiki/Буль,_Джордж
Неправильно назвали тип (имхо), и сокращать его надо буквой а.
   Господин ПЖ
 
374 - 28.09.17 - 16:34
>только время отнимает и раздувает код

хосподи... все вокруг и так уверенны что 1с-никам платят за "строчку кода". ну и сущности в русском языке длиннее чем в английском - это и козе понятно
   Dzenn
 
375 - 28.09.17 - 16:37
Перем Ы; // Штоб никто не догадался
   romix
 
376 - 28.09.17 - 16:54
(375) Вот взаимоисключающий параграф на эту тему:
https://its.1c.ru/db/v8std#content:2149184103:hdoc
4. Имена переменных не должны состоять из одного символа. Использование односимвольных имен переменных допускается только для счетчиков циклов.
  1  2  3  4

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует