Имя: Пароль:
1C
1С v8
Использование функций вместо процедур. Подмена понятий или..?
, ,
0 lxs
 
23.12.19
17:10
1. Следует строго разграничивать proc(x) и func(x) 44% (12)
2. Свой вариант 44% (12)
3. Без разницы, говнокод - наше всё 11% (3)
Всего мнений: 27

Приветствую всех.

Некоторое время назад довелось заниматься code review команды разработчиков.
Наткнулся на то, что в коллективе была принята методология использования вызова функций вместо процедур независимо от того, возвращает ли что-то данная функция или нет.

То есть код

РассчитатьЗадолженность(); //где РассчитатьЗадолженность() - функция

Повсеместно.

У кого какой опыт, кто какой методологии придерживается? Может быть я консервативен, но зачем использовать не по назначению конструкции?
4 SalavatUlaev
 
23.12.19
17:16
Уверен, что правильно пункты назвал, не думаешь что разграничивать - это говнокод или ты самый умный?
В некоторых языках программирования нет вообще процедур, там все методы возвращают значения, в чем есть свои плюсы

Свой вариант
5 1С Ассенизатор ПРОФ
 
24.12.19
08:10
(3) Плюс
(4) И тебе тоже

Не вижу проблемы, кроме конечно понимания при чтении.

Свой вариант
7 dmpl
 
24.12.19
08:21
Если в процедуре происходит ошибка - логично вернуть ее как результат функции. Поэтому любая процедура есть недоделанная функция.

Свой вариант
14 Garykom
 
гуру
24.12.19
08:49
Процедура это функция которая возвращает 0 значений.

Должно быть как в Golang, только функции которые возвращают от нуля до сколько надо значений, не обязательно одно.

Искусственное разделение на процедуры и функции глупо и только вносит путаницу и усложняет изучение и применение ЯП.

Свой вариант
26 Lama12
 
24.12.19
09:00
Поддержу (4).
Использование в качестве процедур, функций очень удобно, хотя и заставляет думать о том, как использовать результаты :-)

Свой вариант
74 mikecool
 
24.12.19
12:20
в чем, кроме идейного, разделение между процедурой и функцией?
или это как спор, с какой стороны сосиску есть?
или автор - фузиновец? )

Свой вариант
81 H A D G E H O G s
 
24.12.19
12:44
1) Процедуры не нужны.
2) Функция должна возвращать структуру.
3) Скорее всего функция должна принимать структуру, но это не точно.

Свой вариант
122 MetaDon
 
24.12.19
19:51
1. одни функции
2. функция без возврата в окончании, возвращают 0
3. булевы - ложь и истина тоже заменить на 0 и иное, тоесть Ложь это константа =1
4.  код в функцию разрешать вставлять как текст динамически, тоесть код может сам вписываться в основной код, и получать его как func.text,
5. прикладным обьектам разрешать копировать функции от одного к другому;
например;
кодф=Справочник.ТМЦ.Функция.Расчет.Текст;
далее программно ...изменяем/удаляем строки и присваиваем текст функции другому обьекту, это простейшая замена наследованию в 1с))

Свой вариант
131 Лефмихалыч
 
24.12.19
20:42
(0) я не имею ничего против, если вся команда так делает. Просто локальная особенность соглашения о кодировании. Нормальная тема.

Свой вариант
132 DomovoiAtakue
 
24.12.19
20:46
(0)Пока еще не перестраивался, но сам пришел к выводу что процедуры не нужны. Написал Процедуру, которая делает ряд действий с данными. Потом решил абгрейдить и вернуть с какими данными все норм проделано, а с какими нет. Можно пойти двумя способами: 1) в процедуре докинуть параметр и в него возвращать, 2) сделать из процедуры функцию и возвращать структуру с чем уже хочешь. Первый вариант мне не нравится, т.к. глупо функцию заменять искусственным костылем. Во втором варианте получается мне надо переписывать слово процедура на функция желательно менять ее название и лазить везде его менять. На мой взгляд логичнее сразу писать функции: когда надо вы используете как процедуру, но если вдруг что приперло вы уже можете возвращать значения. С названиями думаю можно выработать систему. Деление на процедры и функции только дело привычки, которую нам когда-то навязали. Вызов процедуры на очень малое время быстрее чем вызов функции: может давным давно это и важно было, но сейчас - нет.

Свой вариант
146 Дык ё
 
25.12.19
09:22
а еще функцию можно вызвать из табло

Свой вариант
233 uno-group
 
25.12.19
12:36
Ну дык процедура на 28% длиннее функции. Соответственно кто вместо процедуры пишет функция, работает на 28% эффективнее перфекционистов.

Свой вариант