|
|
|
Хорошие и плохие имена переменных и функций | ☑ | ||
|---|---|---|---|---|
|
0
Волшебник
27.11.25
✎
20:08
|
Давайте обсудим.
Потом прикручу пост и голосовалку. Что с венгерской нотацией? Сразу в бан? Что с длинными именами? Должно ли быть слово Получить у функции? |
|||
|
123
Bigbro
29.11.25
✎
10:27
|
(119) в нынешнем коде с 15 вызовами по 1-4 строчки действительно сложно не понять ))
|
|||
|
124
Chai Nic
29.11.25
✎
10:32
|
(122) Не, не надо инфинитив путать с отглагольным существительным. Это другое. Типа ФормированиеУпаковочногоЛиста(). Так можно. Хотя и не нужно, если при этом возвращается не некий промежуточный "процесс", а готовая форма.
|
|||
|
125
Bigbro
29.11.25
✎
10:33
|
(84) а это почти как в старом добром КАМИНе. там тоже все переменные процедуры функции такой длины что в монитор не влезали))
|
|||
|
126
Волшебник
29.11.25
✎
10:37
|
(122) Кстати, в русском языке на инфинитивы тоже требуются дополнительные буквы -ить, -ать,
в отличие от английского, где инфинитивы наоборот являются самой короткой формой глагола. |
|||
|
127
Garykom
гуру
29.11.25
✎
19:39
|
(126) Можно применять "военный язык"
Вместо "Получить..." писать нечто вроде "Дай.." И заменять длинные описания короткими "ЭтуХрень" |
|||
|
128
Волшебник
30.11.25
✎
10:11
|
(127)
ВыполнитьБыстро() ВычислитьСейчасЖе() ЗапуститьФоновое("Задание", ОВыполненииДоложитьСюда) |
|||
|
129
TormozIT
гуру
30.11.25
✎
10:49
|
(127) Спасибо. Буду пробовать повелительное наклонение глаголов
СформируйТаблицу() УдалиФайл() ОткройФорму() Действительно короче и потому удобнее. Но в случае имен свойств перестанет работать мой анализатор типа из имени в ИР, т.к. он опирается на типичные окончания неопределенных форм глаголов. Например свойство с именем "УдалитьФайл" он считает типом "Булево". А вот "УдалиФайл" уже труднее будет отличить от "КачелиФайл" и потому он спасует. |
|||
|
130
Asmody
30.11.25
✎
10:55
|
(120) как только в языке появятся лямбды и замыкания, так сразу и начнём.
Если серьёзно, ФП - это хорошо, но не надо его безумно тыкать туда, куда оно не лезет. |
|||
|
131
Asmody
30.11.25
✎
10:56
|
(129) будет диссонанс с методами платформы. Или придётся их закрыть алиасами
|
|||
|
132
Chai Nic
30.11.25
✎
11:09
|
(130) Сделали же зачем-то модули с повторно-возвращаемыми функциями. И там побочные эффекты не нужны, и даже вредны местами. То есть ты вызвал функцию, получил значение - и можешь быть уверен только в нём, но не можешь быть уверен что она реально выполнилась.
|
|||
|
133
maxab72
30.11.25
✎
11:17
|
"Спасибо. Буду пробовать повелительное наклонение глаголов" А чтоб работало и не тормозило в конце названия функции добавлять постфиксы из трех букв: "Нах" или "Б.я"...
|
|||
|
134
eddy_n
30.11.25
✎
11:36
|
(0) Резюме: всё подпадает под одно. Сколько людей - столько мнений.
|
|||
|
135
eddy_n
30.11.25
✎
11:42
|
(118) Что с чухонцев взять? Они римлян не видели.
|
|||
|
136
eddy_n
30.11.25
✎
11:43
|
Да простят меня люди - вот такое видел описание функции в одной самописке
|
|||
|
137
eddy_n
30.11.25
✎
11:49
|
Пусть будет безобразно, но однообразно. Сегодня одна культура кода, завтра - другая.
|
|||
|
138
Eiffil123
01.12.25
✎
08:55
|
(120) а как же Запрос.Выполнить().Выбрать()
и прочие цепочки действий? оно и функция и что-то там выполняет. |
|||
|
139
Гипервизор
01.12.25
✎
09:04
|
(138) Это функция кого надо функция!
Это метод, это другое. И не всегда же методы что-то возвращают. |
|||
|
140
ДенисСмирнов
01.12.25
✎
10:56
|
Самый бесячий косяк, что нет синонима для Новый, который должен быть как Новая
Писать а = Новый Структура - кривокосо по чучменьски, хоть структуры не используй А вот а = Новая Структура - красиво бы было |
|||
|
141
Гипервизор
01.12.25
✎
11:05
|
(140) Зачем всё многообразие русского языка тащить в код? После оператора Новый указывается идентификатор типа, так что всё логично.
|
|||
|
142
Ненавижу 1С
гуру
01.12.25
✎
11:16
|
(140) это обсуждали. Достаточно было вместо new - назвать ключевым словом "создать"
|
|||
|
143
maxab72
01.12.25
✎
12:05
|
(142) глагол "создать" требует после себя родительного падежа. Или предлагаете в конфигуратор добавить проверку правописания?
|
|||
|
144
vis
01.12.25
✎
12:40
|
(143) "Создаём"
|
|||
|
145
maxab72
01.12.25
✎
12:52
|
(144) а почему во множественном числе?
|
|||
|
146
Гипервизор
01.12.25
✎
12:56
|
(144) Так это же ничего не меняет. Что "создать", что "создаём" требует родительный падеж.
(145) Тандем же. ) Платформа создаёт и программист немножко помогает. |
|||
|
147
Ненавижу 1С
гуру
01.12.25
✎
13:04
|
(143) (144) (146) "это"
|
|||
|
148
Dedal
01.12.25
✎
17:37
|
(14) Меня всегда удивляло как с одной стороны в документации разработчика системы сказано "Имена переменных запрещается начинать с подчеркивания" а потом ты у дочки-франча видишь "_сокращенноеимяфранчаОбщийМодуль"
|
|||
|
149
vis
01.12.25
✎
20:28
|
(148) А чем, кстати, обусловлен запрет подчёркивания?
|
|||
|
150
maxab72
01.12.25
✎
20:41
|
(149) зарезервировали для себя.
|
|||
|
151
ДенисСмирнов
02.12.25
✎
09:56
|
(149) ну прям запрет. "пиратский кодекс - это свод рекомендаций, а не обязательных законов"
|
|||
|
152
Волшебник
02.12.25
✎
10:04
|
(149) Нет такого запрета. У меня вот есть обработка "АРМ_Продажи". И это более правильное название, чем АРМПродажи.
Или вот ещё: КонтрольОстатков_ТоварыВЯчейках
ЗагрузитьИзменения_СборВГХ ЗагрузитьИзменения_СтрокаОрдера_ПакингЛист ТД_Склад_ПриУказанииСекции |
|||
|
153
Chai Nic
02.12.25
✎
10:05
|
Вместо СоздатьОбъект или Новый следовало бы использовать не ключевое слово, а спецсимвол. Типа @, который в 1с не задействован. Как создание объекта указанного класса с вызовом конструктора.
Например: МассивФизлиц=@Массив; Коротко и ясно! |
|||
|
154
ДенисСмирнов
02.12.25
✎
10:10
|
(152) коллеги про этот пункт "3. Имена переменных запрещается начинать с подчеркивания"
|
|||
|
155
Chai Nic
02.12.25
✎
10:11
|
А вместо двух строк декларации процедуры с указаниям места вызова
&НаСервере Процедура ОбработатьДанныеНаСервере(ИсходныеДанные) могли бы сделать в одну строку, типа так Процедура ОбработатьДанныеНаСервере(ИсходныеДанные)::Сервер А директиву &НаСервере сделать применимой не к конкретной процедуре, а к области кода, захватывающей несколько процедур/функций, до конца модуля или до директивы, включающей иной режим. |
|||
|
156
Ёпрст
гуру
02.12.25
✎
10:27
|
(155) при большом листинге, было бы не совсем удобно выяснять тогда, где #насервере начинается и где заканчивается, и вычисляй потом, если описание процедур/функций в этом диапазоне.
|
|||
|
157
Chai Nic
02.12.25
✎
10:33
|
(156) Для этого есть подсветка синтаксиса и выделение блоков в конфигураторе. Можно например цветом фона разделять.
|
|||
|
158
Ёпрст
гуру
02.12.25
✎
10:59
|
(157) цвет фона, ну такое. Тут пошли по пути наименьшего сопротивления
|
|||
|
159
Chai Nic
02.12.25
✎
11:02
|
(158) Тогда бы лучше сделали это как я написал, в виде модификатора в определении процедуры, а не отдельной строкой.
|
|||
|
160
Asmody
02.12.25
✎
11:04
|
(159) отдельные модули для этого должны быть, а не вот это вот всё.
|
|||
|
161
Chai Nic
02.12.25
✎
11:08
|
(160) Ну или так, почему бы и нет? В любом случае модификатор отдельной строкой - это худшее что могло быть придумано.
|
|||
|
162
Garykom
гуру
02.12.25
✎
11:45
|
(155) >А директиву &НаСервере
Логичней сделать модификаторы как в Java или C# В одну строку со служебным словом Процедура/Функция Ну типа public|private|protected и т.д. Или как Экспорт в конце в 1С Но писать в начале Сервер Экспорт Функция ИмяФункции() // ... КонецФункции Клиент Функция ИмяФункции() // ... КонецФункции |
|||
|
163
Garykom
гуру
02.12.25
✎
11:51
|
Но да, не нравится мне, что в 1С по сути одинаковое или похожее исторически сложилось и делается по-разному
Вот чем по сути "Экспорт" отличается от "&НаСервере" и "&НаКлиенте"? И то, и то модификаторы для области видимости |
|||
|
164
Волшебник
02.12.25
✎
11:51
|
(163) слово "Функция" необязательно. В Java/C всё функции
|
|||
|
165
ДенисСмирнов
02.12.25
✎
12:12
|
(162) может еще Тогда и КонецЕсли на фигурные скобки заменить и отделить оператор присваивания от оператора сравнения как == ? И процедуры как класс убрать.
Лично я был бы не против. |
|||
|
166
Волшебник
02.12.25
✎
12:46
|
(165) 1С-Элемент, не?
|
|||
|
167
ILM
гуру
02.12.25
✎
13:44
|
фыва.Дай("ИмяПеременной");
возвращает значение из регистра сведений, а фыва - общий модуль |
|||
|
168
Dedal
02.12.25
✎
13:48
|
(152) не про запрет внутри, запрет на использование вначале "_индитификатора"
|
|||
|
169
Волшебник
02.12.25
✎
14:08
|
(168) На уровне стек-машины 1С имена переменных могут состоять из цифр и включать пробелы.
|
|||
|
170
Chai Nic
02.12.25
✎
14:13
|
(162) Ну это уже дело вкуса, в начале или в конце. Мне больше нравится в конце, где Экспорт. Сути это не меняет.
|
|||
|
171
Мультук
гуру
02.12.25
✎
15:09
|
(0)
Это нормально, если процедура "ЗаполнитьСтавкуНДСНаСервере" не только заполняет ставкуНДС, но еще попутно удаляет многооборотную тару из тч "Товары" ? Это кошерно с точки зрения стандартов разработки 1С ? |
|||
|
172
Волшебник
02.12.25
✎
15:12
|
(171) Нет, не нормально. Надо назвать процедуру ОбработатьНаСервере()
|
|||
|
173
TormozIT
гуру
03.12.25
✎
16:41
|
Гуру искусства именования методов, подскажите как вы решаете дилемму "МассивВСтроку" или "СтрокаИзМассива"? Я все время по-разному называю. Не могу определиться.
|
|||
|
174
maxab72
03.12.25
✎
16:51
|
(173) первый вариант. он короче
|
|||
|
175
novichok79
03.12.25
✎
16:58
|
В 2016м помню я как-то будучи 1Сником пришлось переписывать обработку от чела, который уволился.
Так вот - переменные были вида _таб1, __таб1, __о1, еб**анное всё просто. Такая говнина. Чем отличается _таб1 от __таб1??? А хз. Еще и клиент-серверное взаимодействие не отлажено было. Так зарефакторил, что сам свою написал в итоге за 3 недели. Еще какие-то оптимизации сделал, в общем, стало збс. По содержанию была сложная штука с расчетом технологической карты для производства. |
|||
|
176
maxab72
03.12.25
✎
16:59
|
(175) сразу видно, старая школа, экономия места в памяти и поэтому имена переменных a1, b12... usw.
|
|||
|
177
Chai Nic
03.12.25
✎
17:07
|
(173) СтрокаИзМассива() правильнее, потому что не содержит неявный глагол.
|
|||
|
178
novichok79
03.12.25
✎
17:25
|
(176) самое смешное что похоже он сам стал в каком-то месте путать их местами. типа с мегабайтами он экономил пару килобайт на имена переменных? ну что скажешь, гений ёпта.
|
|||
|
179
Lama12
03.12.25
✎
17:34
|
(176) Извиняюсь. Вопрос для расширения кругозора. А где и когда длина имен переменных влияет на использование памяти?
|
|||
|
180
Волшебник
03.12.25
✎
20:48
|
(179) ассемблер знаете? Если не знаете, то не выпендривайтесь
|
|||
|
181
maxab72
03.12.25
✎
21:11
|
(179) застали 8-битные Атари и Спектрумы с памятью 16к?
|
|||
|
189
Eiffil123
04.12.25
✎
09:48
|
(35) какой кошмар. а потом смотришь в код, и не понимаешь, что там функция возвращает
|
|||
|
190
Mort
04.12.25
✎
10:41
|
Порой править код за этими затейниками, бредящими ООП и упаковывающими возвраты в 10 структур, душнее чем разбирать спагетти за новичками и семерочниками.
Ошибки в возвратах оправданы только тогда, когда у нас функция прокси к чему-то внешнему, которое штатно может работать и так же штатно может не работать, например http - запрос или чтение файла. А если плохие параметры - нужно дёргать исключение без всяких возвратов. Пусть вызывающая сторона парится. |
|||
|
191
Timon1405
04.12.25
✎
10:42
|
(189) наоборот, это бест практис. В начале функции написан контракт: что и в каком виде она возвращает. Автор функции обязуется этот контракт соблюдать и ждёт от того кто её вызывает того же. Если ты ее вызвал в своем коде с другими ожиданиями, то это твои проблемы.
К сожалению, у многих разработчиков возникает желание написать свою функцию вместо соблюдения контракта, но надо учиться доверять коллегам. Лучший код - код который не написан! (а переиспользован) |
|||
|
192
Mort
04.12.25
✎
10:46
|
Хотя многие 1Сники к исключениям относятся так: "В программе и так моих ошибок хватает, зачем мне их ещё специально генерировать".
|
|||
|
193
Eiffil123
04.12.25
✎
10:46
|
(191) ваш написанный перед функцией контракт - это филькина грамота и профанация. Никаких контрактов в 1С нет, ибо динамическая типизация.
и будешь видеть этот контракт либо в отладчике, либо бегая по функциям через F12 |
|||
|
194
Timon1405
04.12.25
✎
11:29
|
(193) думаю в 1с это понимают. но тем не менее во всех типовых конфигурациях перед каждой функцией есть блок комментария с описанием входных и выходных параметров.
а как по-Вашему должен выглядеть код из (35)? нужно дублировать проверку что ID это число вне этой функции перед каждым местом ее вызова? |
|||
|
195
Garykom
гуру
04.12.25
✎
12:11
|
(190) Дада
А потом заюзал такой код (с исключениями) в коде веб или http-сервиса И получил зависания на клиентской стороне с дикими таймаутами |
|||
|
196
Garykom
гуру
04.12.25
✎
12:12
|
(195)+ Причем уй разберешься что происходит
Сервис обязан не падать А вернуть ошибку клиенту, чтобы можно было разбираться |
|||
|
197
ДенисСмирнов
04.12.25
✎
13:39
|
(180) помню как ассемблер изучал... до сих пор отличие exe файла от com помню. сидят как латинские исключения в голове у Остапа Бендера
|
|||
|
198
novichok79
04.12.25
✎
14:03
|
(190) Вернуть в структуре норм, лучше передать потом структуру эту везде. Челы и ООП тут не причем.
Лучше чем рассовывать гирлянду переменных в методах. |
|||
|
199
Chai Nic
04.12.25
✎
14:17
|
(198) +1. Возвращать несколько значений через структуру намного красивее, чем через кучу изменяемых параметров.
|
|||
|
200
ManyakRus
04.12.25
✎
14:18
|
(1) В большинстве популярных руководств по стилю кода (style guides) и принципам чистого кода (clean code) рекомендуется давать функциям имена-глаголы или глагольные словосочетания, так как функция — это действие.
Вот основные источники, где это прописано или широко рекомендуется: 1. Книга Роберта Мартина "Чистый код" (Clean Code) Это классика. В главе 2 ("Meaningful Names") прямо указано: "Methods should have verb or verb phrase names" (Методы должны иметь имена-глаголы или глагольные словосочетания). Примеры: postPayment(), deletePage(), save(). НоменклатураНаименованиеПолучить() - так нельзя, это не глагол |
|||
|
201
Гипервизор
04.12.25
✎
14:23
|
(200) А процедура это не действие?
|
|||
|
202
Волшебник
04.12.25
✎
14:41
|
(200) В движке форума функции названы существительными, например, Topic.author() - функция возвращает автора ветки.
|
|||
|
203
VladZ
04.12.25
✎
15:16
|
(200) Да, читал.
Многие рекомендуют эту книгу. Но есть нюанс. Книга была написана в 2010 году. Вот уже 15 лет как... Возможно, пришло время написать другую книгу. Актуальную! |
|||
|
204
ZloyBrawler
04.12.25
✎
15:18
|
(202) это похоже больше на property, то есть свойство. Ожидаешь еще наличие getAuthor и setAuthor, но это не тот случай
|
|||
|
205
Timon1405
04.12.25
✎
15:29
|
(203) Актуальная книга скоро будет такая: "Называйте переменные как хотите, ИИ
|
|||
|
206
VladZ
04.12.25
✎
15:36
|
(205) Лет через 10 программист даже не будет знать, что такое переменная и не будет думать, как эту сущность обозвать.
|
|||
|
207
Гипервизор
04.12.25
✎
15:48
|
(206) Вот это прогноз! А что будет? Мыслеформы?
|
|||
|
208
Мультук
гуру
04.12.25
✎
15:50
|
||||
|
209
Dedal
04.12.25
✎
15:54
|
(207) Промт вида "Необходимо спарсить с сайта mista.ru все сообщения пользователя с ником Гипервизор, игнорировать сообщения где это не ник пользователя, а упоминание его или аналогичный нику текст"
|
|||
|
210
Garykom
гуру
04.12.25
✎
16:21
|
(198) (199) Многим не нравится что типизации нет
И обязательность не проверяется само Может доработать структуры, добавив типизацию и нечто вроде ПроверитьЗаполнение() встроенное для них |
|||
|
211
Chai Nic
04.12.25
✎
16:25
|
(210) А что, в параметрах есть типизация?
|
|||
|
212
Dedal
04.12.25
✎
16:36
|
(210) Вот тоже не понимаю не нравится? Ну организуй сам в своем коде.
Это наследие программирования на других языках и обучения на тех языках где строгая типизация, страдал этим только в момент входа в 1С. А потом проблемы отсутствия типизации всплывают раз в год, и то когда делаешь что-то нестандартное. Ну и зачем оно тогда? |
|||
|
213
AlexKimp
04.12.25
✎
16:42
|
(197) к сожалению, помню уже смутно. MZ... размеры сегментов, адрес точки входа, прочие данные в заголовке.
Изучал ибо попалась мне антология выпусков фидошного журнала инфектед войс. Учился в лабораторных целях писать вирусы. Учился долго и упорно. Разумеется, ни один вирус пределы моего компа не покинул )) вся эта история закончилась как-то одномоментно )) в одном из выпусков был листинг исходника одного из вариантов Чернобыля. Как раз тот, который МБРку затирает. Решил прогнать в отладчике. Опять же лабораторных целях. Скомпилил, поизучал и... забыл..... Как сейчас помню... было утро субботы. Горячий кофе, желание поковырять диплом, который через 2 недели на рецензию сдавать... BOOT DISK FAILURE ))))))) Хорошо, что был распечатан черновик диплома. |
|||
|
214
1с_ник
09.12.25
✎
15:25
|
ИИ ответил так и я согласен с этим.
Для 1С-практики лучше глагол + сущ.: ПолучитьНоменклатуру(). Такой порядок читается естественно и соответствует типовым стилям (действие → объект) |
|||
|
215
Fish
гуру
09.12.25
✎
15:40
|
Те имена, которые ты сам используешь - всегда хороши.
|
|||
|
216
Волшебник
09.12.25
✎
16:40
|
ЭтоБаранов = СтрНайти(ПараметрыСеанса.ТекущийПользователь.Наименование, "Баранов ") > 0;
Если ЭтоБаранов Тогда
Предупреждение("Доступ запрещён!");
Отказ = Истина;
Возврат;
КонецЕсли; |
|||
|
217
formista2000
09.12.25
✎
17:09
|
https://govnokod.ru/1c
не благодарите )) |
|||
|
218
ptiz
09.12.25
✎
17:34
|
(14) 👍
Я всегда "м" пишу в имени переменных уровня модуля - хоть что-то. Вообще, плохо, что по имени нельзя понять - то ли это переменная (локальная или уровня модуля), то ли реквизит объекта, то ли реквизит формы, то ли параметр процедуры. |
|||
|
219
Злопчинский
10.12.25
✎
11:18
|
(214) такие стили именований могут быть наследством от англоязычных (западных) стилей, определяемых в т.ч. менталитетом и строением языка.
. когда я открою какую-нибудь типовую и надо найти, как работают типовые с номенклатурой - я в первую очередь буду искать "номенкл", а не "получить"/взять/сложить/итд. Да, сложилась практика отглагольных форм. но что-то я последнее время, когда много процедур и функций начал "группировать" по принципу "Объект" -> "Что с ним делаем"... |
|||
|
220
Chai Nic
10.12.25
✎
11:24
|
(218) Это вы считаете что это плохо. А изначально возможность абстрагироваться от способа получения данных считалось крайне полезной. В паскале вот даже можно было вызывать функцию без скобок.
|
|||
|
221
Fish
гуру
10.12.25
✎
10:20
|
(42) "А есть утвержденные тесты для проверки "нормальности" программиста?" - Если ты работаешь с типовыми и у тебя волосы причёсаны и глаза не вытекли - ты ненормальный.
|
|||
|
222
Asmody
10.12.25
✎
11:16
|
(221) 🔥
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |