Имя: Пароль:
1C
1С v8
Одно имя переменной и функции и рекомендации 1С по именованию переменных и функций
0 Sam1C
 
10.01.20
16:56
1. Лучше их именовать по-разному 55% (6)
2. Свой ответ 27% (3)
3. Нормально, просто нужно разуть глаза 18% (2)
Всего мнений: 11

1С рекомендует в именовании функций не использовать «Получить,Установить…» вместо ПолучитьТаблицуДокументов(), правильно именовать функцию ТаблицаДокументов(). С одной стороны все ОК. Но в таких ситуация может возникать совпадение имен переменной и функции:
Процедура РассчитатьЧтоТо()
….
ТаблицаДокументов = ТаблицаДокументов();
Для Каждого СтрокаДокументов ИЗ ТаблицаДокументов Цикл

КонецПроцедуры

В этих ситуациях можно, случайно обратится, вместо переменной к функции или вообще попасть в бесконечную рекурсию:
Функция  ТаблицаДокументов()
ТаблицаДокументов =  Новый ТаблицаЗначений;
….
    Возврат  ТаблицаДокументов(); //опечатка)
КонецФункции

Как относитесь к одинаковым именам переменных и функций?
1 Волшебник
 
модератор
10.01.20
16:56
сначала научитесь писать -ться и -тся
2 ДенисЧ
 
10.01.20
16:59
(0) "Как относитесь к одинаковым именам переменных и функций?"
Стреляю на запах.
3 1Сергей
 
10.01.20
17:00
У 1С таких проблем нет, потому что Функции всегда пишутся со скобками
4 Sam1C
 
10.01.20
17:03
(1) ...случайно обратиться....., прошу прощения
5 quest
 
10.01.20
17:04
первое - а что мешает их именовать по разному?
И второе - стандарты 1 - это просто набор пожеланий - код должен быть понятным, бабы красивыми, солнце - греть. Ибо без системы автоматизированной проверки - все это пшик и повод на форуме потрындеть. В общем "не держись стандарта аки слепой стенки" - твори, дерзай

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

Свой ответ
6 Timon1405
 
10.01.20
17:07
(5) "не держись стандарта аки слепой стенки" - твори, дерзай - совет не очень. проверка кода в 1с очень даже есть https://releases.1c.ru/project/ACC , откройте ERP, увидите там отсылки к правилам
7 quest
 
10.01.20
17:10
(6) а случайно не скажете - сколько будет ошибок если проверить тот же ЕРП через ACC? не говоря уж про сонар. Отюсда вывод - раз уж вендор болт на свои стандарты кладет, то смысл быть святее папы римского? вот и остается - твори, дерзай, всем по*уй
8 pechkin
 
10.01.20
17:12
(7) но хочется то красиво чтоб было
9 Timon1405
 
10.01.20
17:13
(7) так надо прогонять не саму ЕРП (там есть галка "оставить на совести вендора"), а свой дописанный код.
10 Sam1C
 
10.01.20
17:18
Тема тут больше не стандарта, а удобства, по читабельности кода мне лично первый вариант, но когда быстро кодишь, из контекстной подсказки, как всегда назло выберешь ни то, что надо и потом удаляй скобки или наоборот.
11 pechkin
 
10.01.20
17:20
интересно почему 1с не  отказалась от слова "получить" ?
12 Конструктор1С
 
10.01.20
17:23
(0) имя процедуры должно четко описывать, что она делает, имя функции должно четко описывать возвращаемое ею значение. Должно быть не пространное ТаблицаДокументов(), а чёткое и конкретное название, например, ТаблицаДокументовСИстекшимСрокомОплаты()
13 unenu
 
10.01.20
17:27
раньше было
ОбщегоНазанчения.ПолучитьЗначениеРеквизита()

сейчас стало
ОбщегоНазанчения.ЗначениеРеквизитаОбъекта()

(11) так что - культовые разработчики таки приняли стандарты
14 Sam1C
 
10.01.20
17:32
(12) в теме про одинаковость имени переменной и функции, ТаблицаДокументов –чисто упрощенный пример имени.
15 JeHer
 
10.01.20
17:36
С этими стандартами можно пшикнуть при обновлении. Возьмут деятели из 1С и назовут твой самый любимый экспортный модуль твоим же названием "СделатьВсё" и пшик...
16 BeerHelpsMeWin
 
10.01.20
17:37
(0)
Тоже не могу отучиться использовать "Получить" в именах функций.
В свое время слишком привык к конструкциям типа Something=getSomething(), и на мой взгляд это куда более читабельно.

Лучше их именовать по-разному
17 VladZ
 
10.01.20
17:40
(0) Плохо отношусь. Поэтому пишу "ПолучитьТаблицуДокументов()". Это более читаемо.
18 unenu
 
10.01.20
17:43
если вы пишите с претензией на "совместимо", то могут придраться и не совместить.
в противном случае случае стандарт то, что делает код более логичным и понятным.
19 Vinianel
 
10.01.20
18:05
(17) +1.

Лучше их именовать по-разному
20 Конструктор1С
 
10.01.20
18:13
(14) дык, я об том и пишу, что при хорошо подобранных именах подобные проблемы отпадают сами собой. Сравни:

ТаблицаРеализаций = ТаблицаРеализаций();

и

ПросроченныеРеализации = ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей();
21 pechkin
 
10.01.20
18:14
(20) те ты предлагаешь для каждой сущности придумывать 2 имени: краткое и полное
22 pechkin
 
10.01.20
18:14
но можно краткое имя всегда делать Таблица
23 Провинциальный 1сник
 
10.01.20
18:23
Целиком и полностью одобряю эти принципы. Функция - не действие. Императивное именование плохой стиль. Для императивов есть процедуры.

Нормально, просто нужно разуть глаза
24 pechkin
 
10.01.20
18:27
(23) а как же get и set в других языках?
25 Провинциальный 1сник
 
10.01.20
18:28
(24) Это не функции, а объявления методов
26 rphosts
 
10.01.20
18:48
(0) то, что предлагает 1С - чуть допиленная венгерская нотация и это хорошо!
А вообще курните как называются вызовы в модулях БСП, делайте так-же - не запутаетесь!

Свой ответ
27 Ненавижу 1С
 
гуру
11.01.20
00:38
(25) а методы уже не функции?
28 Aleksey
 
11.01.20
00:56
(15) типа как ЗначениеЗаполнено() из 8.0
29 Hans
 
11.01.20
01:03
Сегодня тоже на эту тему думал. Так и не решил как делать.
30 ssh2006
 
11.01.20
01:16
придерживаюсь

Лучше их именовать по-разному
31 Злопчинский
 
11.01.20
01:23
в клюшках, например,
переменная или реквизит могла именоваться Состояние при наличии Состояние()
а вот Сообщить и Сообщить() - не канает.
Странно...
32 Злопчинский
 
11.01.20
01:24
собственно

Лучше их именовать по-разному
33 Конструктор1С
 
11.01.20
04:56
(21) по канонам хорошего программирования, именам в коде (именам переменных и методо) нужно уделять тщательнейшее внимание. Есть ты, в процессе разработки, выборам имен уделяешь меньше времени, чем написанию кода, то у тебя априори плохой код
34 Конструктор1С
 
11.01.20
05:15
ПросроченныеРеализации = ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей();

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

ТаблицаРеализацийСОтклонениямиОтГрафикаПлатежей = Новый ТаблицаЗначений;

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

ТаблицаДокументов = Новый ТаблицаЗначений; // Таблица реализаций с отклонениями от графика платежей

но в программировании хорошим именем считается такое, которое не требует комментариев. Самодокументирующийся код и все дела
35 Cyberhawk
 
11.01.20
09:02
Иногда это смотрится нормально

Нормально, просто нужно разуть глаза
36 Cyberhawk
 
11.01.20
09:03
Иногда это смотрится ненормально и даже может заметно снижать читаемость кода

Лучше их именовать по-разному
37 080808Ник
 
11.01.20
11:16
(0) сам таким мучаюсь вопросом) что характерно, в стандартах не указан этот вопрос и примера нет
38 Cyberhawk
 
11.01.20
12:54
(37) "в стандартах не указан этот вопрос и примера нет" // Так вопрос составной - про имя переменной и имя функции. По отдельности все указано, нет никакой нужды объединять эти два вопроса в какой-то третий.
39 palsergeich
 
11.01.20
13:04
(38) не все так очевидно.
Я например не понимаю поборников стандартов.
Если у тебя в переменной межит массив счетов исключений, то почему это не МассивСчетовИсключений, а СчетаИсключения(что на самом деле при чтении здорово снижает скорость восприятия)
И причем люди весьма упоротые, хрен чо докажешь. Я в одном месте нарвался на это при ревью, потом просто заменил имя переменной и спросил всех - так читать лучше? Сказали нет, потом ещё пол часа побудило и таки мой вариант оставили, но не каждый так в залупу полезет.
Стандарты это правила, а не приказы, вот что нужно понимать и доносить, если ты понимаешь зачем они то всегда легко можно доказать и необходимость отступления
40 Cyberhawk
 
11.01.20
13:23
(39) Сегодня это массив, завтра - список значений, послезавтра - уже таблица значений.
За необходимость или необязательность стандартов беседовать давно уже неинтересно)
41 palsergeich
 
11.01.20
13:39
(40) не будет ни списка ни ТЗ, даже если воткну весь план счетов коллекцию смысла менять нет от этого ничего не изменится.
При всем при этом в том же БСП вполне себе такой гейминг используется.
42 palsergeich
 
11.01.20
13:41
(41) если изменение типа коллекции теоретически возможно, то под это делается ещё несколько оберток и там то с неймингом все ок.
43 fisher
 
11.01.20
13:42
(0) > 1С рекомендует в именовании функций не использовать «Получить,Установить…»
Про "Установить" ты переборщил.
Для процедур как раз неопределенная форма глагола.
А для функции правило как раз в том смысле, что если это стандартная функция получения возвращаемого результата и больше ничего, тогда просто всегда для них пришлось бы писать "Получить...". Опуская "Получить" - просто получаем более лаконичное имя функции.
Для всех остальных случаев работают те же правила, что и для процедур.
ЗЫ. Но я тоже не могу отвыкнуть от "Получить" и не вижу особого смысла отучиваться.
44 080808Ник
 
11.01.20
13:44
(38) так вот неочевидно раз вопросы в (0) возникают
45 fisher
 
11.01.20
13:45
ИМХО, проще любые методы именовать как действия, даже если это стандартное действие "Получить". Так что в этом месте я со стандартами 1С не согласен.

Свой ответ
46 080808Ник
 
11.01.20
13:46
(45) получить это уже не метод, а функция)
47 fisher
 
11.01.20
13:50
(46) Метод - это и функция и процедура. Термин "метод" просто используют обычно для членов класса. Скажу проще - любые процедуры/функции лучше именовать как действия, ИМХО. Это оставляет меньше неопределенности и делает код более читабельным. Лично для меня, во всяком случае.
48 fisher
 
11.01.20
13:54
Ну и при этом автоматически решается сабжевая проблема. Потому что переменная никогда не называется как действие.

Лучше их именовать по-разному
49 fisher
 
11.01.20
14:00
Могу ошибаться, но в импортных стайл-гайдах так как в 1С советуют вроде и нету нигде... Вероятно, им писать "Get" гораздо менее лениво чем "Получить" и поэтому ни у кого дискомфорта и не возникает :)
50 Tonik992
 
11.01.20
14:11
(49) Да. И в best practices методы должны начинаться с глагола.
51 Cyberhawk
 
11.01.20
14:42
(41) Ну тебе конечно виднее что там будет, а что не будет. Я лишь пояснил откуда ноги растут у этой рекомендации - для облегчения поддержки кода.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший