|
Одно имя переменной и функции и рекомендации 1С по именованию переменных и функций | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
Sam1C
10.01.20
✎
16:56
|
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) Ну тебе конечно виднее что там будет, а что не будет. Я лишь пояснил откуда ноги растут у этой рекомендации - для облегчения поддержки кода.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |