|
Функции возвращающие булево или переменная Отказ. Что лучше? | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
ГдеСобака Зарыта
06.07.17
✎
10:47
|
Допустим есть код в котором организован ряд проверок в процедурах/функциях произвольной вложенности. Какой вариант кода будет более православным, читабельным?
1. Использовать функции возвращающие булево Если НЕ УсловиеВыполнено() Тогда Возврат; КонецЕсли 2. Использовать процедуры и переменную Отказ ПроверитьВыполнениеУсловия(Отказ); Если отказ Тогда Возврат; КонецЕсли; |
||||||||||
1
drcrasher
06.07.17
✎
10:47
|
(0) по методике 1с - вариант 2
|
||||||||||
2
Ёпрст
06.07.17
✎
10:49
|
(0) зависит от задачи
|
||||||||||
3
Вафель
06.07.17
✎
10:49
|
(1) Это если есть параметр события Отказ
|
||||||||||
4
Кирпич
06.07.17
✎
10:49
|
У вас чо, летнее обострение?
Как правильнее писать функции в конструкции "Если Тогда" |
||||||||||
5
Ёпрст
06.07.17
✎
10:50
|
И смотря, что именно должна вернуть функция.
Если одно значение, то достаточно и Возврат Ложь/Истина если возвращает структуру, то 2-ой вариант. |
||||||||||
6
ГдеСобака Зарыта
06.07.17
✎
10:58
|
(1) А в какой методичке 1С это написано?
|
||||||||||
7
Лефмихалыч
06.07.17
✎
10:59
|
параметр Отказ нужен тогда, когда, во-первых, метод должен вернуть что-то отличное от простого результата проверки, во-вторых, проверка этого условия либо установка отказа - это побочный эффект у метода. Причем - одновременно.
Когда у тебя метод служит целиком и полностью, чтобы только проверить условие, то параметр - это копрокод. |
||||||||||
8
spock
06.07.17
✎
11:11
|
(7) +
Функцию с булево |
||||||||||
9
vde69
модератор
06.07.17
✎
11:11
|
если подразумевается вызов нескольких обработчиков подряд, то лучше "Отказ" и проверка на него внутри обработчика, пример:
Отказ = ложь; Обработчик1(Отказ,параметры); Обработчик2(Отказ,параметры); Обработчик3(Отказ,параметры); |
||||||||||
10
vde69
модератор
06.07.17
✎
11:12
|
3
Свой вариант феншуй-кода. |
||||||||||
11
Йохохо
06.07.17
✎
11:15
|
возвращать Неопределено слишком просто? Зачем Отказ в предопределенных процедурах понятно, в своих сам себе буратино
(9) заклюют за лишнее время. Ставить в начале каждого если не отказ возврат - на троечку |
||||||||||
12
arsik
гуру
06.07.17
✎
11:16
|
Я стараюсь всегда возвращать структуру минимум с 2-мя параметрами.
1) Отказ 2) Описание отказа Свой вариант феншуй-кода. |
||||||||||
13
senior
06.07.17
✎
11:19
|
(0) У Отказ'а одна задача - зафиксировать, что документ не может быть проведен, но при этом не прерывать выполнение и продолжить дальнейшие проверки. Это стандартная методика 1С. Если такое поведение не нужно, то Отказ не нужен в принципе.
|
||||||||||
14
drcrasher
06.07.17
✎
11:24
|
|||||||||||
15
Альбатрос
06.07.17
✎
11:37
|
(11) Ну не факт. Ибо обычно при отказе выводят информацию почему, собссно, отказ. И тогда сразу провенрить по всем условиям лучше.
|
||||||||||
16
Лефмихалыч
06.07.17
✎
11:38
|
(11) неопределено оно на то и неопределено, что это не ответ, а его отсутствие. Возвращать Неопределено, когда смысл в том, что какая-то проверка не пройдена - очень плохо. В результате проверки неопределено должно означать, что выполнить проверку не удалось - например, ресурс, участвующий в проверке, не доступен или еще что-то такое.
Неопределено вместо отказа - это копрокод и вообще голимое пхп. Профессионалы так не делают. |
||||||||||
17
Лефмихалыч
06.07.17
✎
11:40
|
(14) это не то, о чем автор спрашивает. В этой статье описывается, как правильно обращаться с inout-флагами Отках, СтандартнаяОбработка и т.д. Автор же спрашивает, как православно инкапсулировать длинные проверки каких-то условий.
|
||||||||||
18
vde69
модератор
06.07.17
✎
12:01
|
(11) у меня лишним является столь малое количество, что им можно пренебречь...
зато 1. читабельность основной процедуры отличная 2. в обработчиках можно предусмотреть например вывод логов и т.д. |
||||||||||
19
Лефмихалыч
06.07.17
✎
12:20
|
(18) таки это (8) хреновый вариант, усложняющий поддержку и сопровождение кода. Читабельность он как раз усирает в край - без чтения содержимого этих обработчиков ты ни когда не поймешь, что сделает последующий, если предыдущий вернул отказ. Это безусловно плохо.
|
||||||||||
20
Zamestas
06.07.17
✎
12:26
|
(0) От ситуации зависит - я иногда вообще структуру со структурами между функциями гоняю.
Свой вариант феншуй-кода. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |