|
Использование функций вместо процедур. Подмена понятий или..? | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
lxs
23.12.19
✎
17:10
|
Приветствую всех.
Некоторое время назад довелось заниматься code review команды разработчиков. Наткнулся на то, что в коллективе была принята методология использования вызова функций вместо процедур независимо от того, возвращает ли что-то данная функция или нет. То есть код РассчитатьЗадолженность(); //где РассчитатьЗадолженность() - функция Повсеместно. У кого какой опыт, кто какой методологии придерживается? Может быть я консервативен, но зачем использовать не по назначению конструкции? |
||||||||||
1
Garikk
23.12.19
✎
17:14
|
нужно следовать гайдлайнам языка
Следует строго разграничивать proc(x) и func(x) |
||||||||||
2
elCust
23.12.19
✎
17:14
|
Да ващще, пишут как хотят. Никакого уважения.
Следует строго разграничивать proc(x) и func(x) |
||||||||||
9
jsmith82
24.12.19
✎
08:22
|
функция [в 1с] всегда что-то возвращает, хотя бы Неопределено, т.е. можно к ней обратиться как к функции, а к процедуре уже нельзя
Следует строго разграничивать proc(x) и func(x) |
||||||||||
13
lxs
24.12.19
✎
08:45
|
(11) "Процедура может поменять" - процедура ничего не может, если ты там не наговнокодишь. Посмотри в любой типовой обработку проведения, например.
Процедура ОбработкаПроведения(Отказ, РежимПроведения) // Инициализация дополнительных свойств для проведения документа ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения); // Движения по денежным средствам. ДенежныеСредстваСервер.ОтразитьДенежныеСредстваУПодотчетныхЛиц(ДополнительныеСвойства, Движения, Отказ); ДенежныеСредстваСервер.ОтразитьДенежныеСредстваКСписаниюСПодотчетныхЛиц(ДополнительныеСвойства, Движения, Отказ); ... КонецПроцедуры И это вполне себе логично. В каждой "внутренней" процедура в начале добавляешь проверку на отказ и всё. Напиши мне этот же код только на функциях. Я даже за попкорном схожу. Следует строго разграничивать proc(x) и func(x) |
||||||||||
18
mmmarat
24.12.19
✎
08:54
|
Если используют функции, там где это не обязательно, можно закрыть на это глаза. В каких то случаях это допустимо или это частный случай. Но если везде вместо процедур пишут исключительно функции, то это говнокод.
Следует строго разграничивать proc(x) и func(x) |
||||||||||
21
Провинциальный 1сник
24.12.19
✎
08:56
|
Более того. Функция должна быть строгой в математическом смысле, без побочных эффектов. То есть, не изменять контекст, а лишь возвращать значение, простое или структурное, для последующей обработки.
Следует строго разграничивать proc(x) и func(x) |
||||||||||
39
Mort
24.12.19
✎
09:40
|
Тупейшая хрень. "А вот чо место простаивает, давайте его используем как возврат для ошибок". Тот кто мыслит строками может такое выдумать. Кто мыслит объектами и взаимодействиями, четко понимает чем одно отличается от другого и никогда на эту херню не подпишется.
Следует строго разграничивать proc(x) и func(x) |
||||||||||
43
ManyakRus
24.12.19
✎
09:58
|
функция которая ничего не возвращает это обман.
Ненаписание слова "Знач" это тоже обман. Не надо никого обманывать. Следует строго разграничивать proc(x) и func(x) |
||||||||||
54
novichok79
24.12.19
✎
11:22
|
бывает так, что нужен результат выполнения какой-либо операции, тогда вроде функция ведет себя как процедура, но возвращает какие данные о статусе выполнения операции. я делаю так
Функция СделатьДело() МассивОшибок = Новый Массив; Попытка РезультатОперации = Сделать1(); Исключение РезультатОперации = Неопределено; МассивОшибок.Добавить("Не шмогла " + КраткоеОписаниеОшибки(ИнформацияОбОшибке())); КонецПопытки Результат = Новый Структура; Результат.Вставить("ОперацияУспешна", МассивОшибок.Количество() = 0); Результат.Вставить("МассивОшибок", МассивОшибок); Результат.Вставить("РезультатОперации", РезультатОперации); Возврат Результат; КонецФункции Следует строго разграничивать proc(x) и func(x) |
||||||||||
120
pavig
24.12.19
✎
17:42
|
Самое адекватное объяснение ИМХО в (51)
Следует строго разграничивать proc(x) и func(x) |
||||||||||
123
Конструктор1С
24.12.19
✎
20:09
|
Надо делать как общепринято, а не как вошло в традицию в отдельно взятом болотце. Готов спорить, говнокодинг у этих ребят далеко не ограничивается использованием функций вместо процедур
Следует строго разграничивать proc(x) и func(x) |
||||||||||
154
tan76
25.12.19
✎
10:23
|
*
Следует строго разграничивать proc(x) и func(x) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |