|
Про логические выражения | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Ненавижу 1С
гуру
17.01.20
✎
22:33
|
Изучая типовые, наткнулся, что пишут так:
Элементы.Календарь.Доступность = ?(РежимУчетаОтсрочки = 1, Истина, Ложь); //типовой вариант, он же первый когда можно было писать: Элементы.Календарь.Доступность = (РежимУчетаОтсрочки = 1); //альтернативный вариант, второй ну хорошо, что так ведь могли бы и вот так: Если РежимУчетаОтсрочки = 1 Тогда //третий вариант, через Если Элементы.Календарь.Доступность = Истина; Иначе Элементы.Календарь.Доступность = Ложь; КонецЕсли; А какой Ваш вариант? |
||||||||||||||||
1
mikecool
17.01.20
✎
22:35
|
я пишу обычно по 2 варианту, но с учетом на будущее часто 3
свой вариант (сейчас напишу) |
||||||||||||||||
2
ssh2006
17.01.20
✎
22:56
|
нормально
альтернативный вариант, второй |
||||||||||||||||
3
_Дайвер_
17.01.20
✎
23:10
|
(0)По всякому нормально
1 вариант обозначает что используется ?() 2 вариант что объект РежимУчетаОтсрочки имеет тип Булево 3 вариант как сказал (1) на будущее КГ/АМ |
||||||||||||||||
4
Tonik992
18.01.20
✎
00:17
|
(0) Вероятно, второй вариант немножко запутанней выглядит. Однако, наличие скобок упрощает понимание, чем если бы их не было... вопрос..
Первый вариант, возможно, применяется для: 1. Лучшего восприятия, 2. Возможности легкого изменения значения с булевого на что-то другое. |
||||||||||||||||
5
Волшебник
модератор
18.01.20
✎
00:20
|
(3) в пункте 2 неточность
|
||||||||||||||||
6
RomanYS
18.01.20
✎
00:23
|
(5) И при каких условиях результат [2] отличен jn [1]?
|
||||||||||||||||
7
Волшебник
модератор
18.01.20
✎
00:25
|
(6) у Дайвера написано, что РежимУчетаОтсрочки имеет тип Булево, а в сабже число сравнивается с числом и вот результат этого сравнения имеет тип Булево
|
||||||||||||||||
8
Злопчинский
18.01.20
✎
00:29
|
(7) не понял. загадочная фраза
"...написано, что РежимУчетаОтсрочки, " - что "что"..? |
||||||||||||||||
9
RomanYS
18.01.20
✎
00:45
|
(7) Так в [1] то же самое.
|
||||||||||||||||
10
palsergeich
18.01.20
✎
00:58
|
Вариант 3 только.
Вариант 1 - рекомендуется не использовать тернарные операторы, пока не в стандарте Вариант 2 - одна строка должна содержать одно действие, это есть в стандарте. |
||||||||||||||||
11
Злопчинский
18.01.20
✎
01:11
|
ну если третий вариант то хотя бы так
Если РежимУчетаОтсрочки = 1 Тогда Элементы.Календарь.Доступность = Истина; Иначе Элементы.Календарь.Доступность = Ложь; КонецЕсли; |
||||||||||||||||
12
Asmody
18.01.20
✎
01:20
|
Функция ДоступностьКалендаря(_РежимУчетаОтсрочки)
Возврат _РежимУчетаОтсрочки = 1; КонецФункции //... Элементы.Календарь.Доступность = ДоступностьКалендаря(РежимУчетаОтсрочки); |
||||||||||||||||
13
Tonik992
18.01.20
✎
01:20
|
(10) Несовсем верно растолковали стандарт "Одна строка - одно действие".
В таком случае Если А=2 И С=4 Тогда Придется переписать на: Если А=2 И С=4 Тогда |
||||||||||||||||
14
palsergeich
18.01.20
✎
01:21
|
(13) Допускается в одной строке присутствие 2х однотипных операторов. это написано там же
|
||||||||||||||||
15
Asmody
18.01.20
✎
01:22
|
"Магические" константы - это плохо. Что такое "РежимУчетаОтсрочки = 1" - хз
|
||||||||||||||||
16
palsergeich
18.01.20
✎
01:22
|
(14) А случай когда в одной строке знак "=" является и оператором присваивания и оператором сравнения - нет
|
||||||||||||||||
17
Asmody
18.01.20
✎
01:24
|
(16) Когда знак "=" является и оператором присваивания, и оператором сравнения, - это уже к архитекторам языка.
|
||||||||||||||||
18
Tonik992
18.01.20
✎
01:24
|
(16) блин. Вы серьезно?)
Если А=2 И С<>4 Тогда Если А=2 И С=4 Тогда |
||||||||||||||||
19
palsergeich
18.01.20
✎
01:25
|
(18) Ты стандарты читал или поспорить заешл?
|
||||||||||||||||
20
palsergeich
18.01.20
✎
01:26
|
На выражение условных операторов свой раздел.
|
||||||||||||||||
21
Asmody
18.01.20
✎
01:27
|
(19) А стандарты те же люди придумывали, что и (17)?
|
||||||||||||||||
22
Tonik992
18.01.20
✎
01:29
|
Мне показалось вы хотели сказать, что "Вариант 2 - одна строка должна содержать одно действие, это есть в стандарте." - это ваше противоречие. А вы наоборот привели довод в пользу использования. Я не понял сразу.
Не сердчайте, все мы люди. |
||||||||||||||||
23
palsergeich
18.01.20
✎
01:29
|
(21) начинается.
А по существу? |
||||||||||||||||
24
palsergeich
18.01.20
✎
01:30
|
(22) Ок, мог коряво написать. Приношу извинения за то что сформулировал двояко.
|
||||||||||||||||
25
Tonik992
18.01.20
✎
01:33
|
(15) да-да. Это всегда боль. Только разработчик, придумавший магическое число, знает его назначение.
|
||||||||||||||||
26
Asmody
18.01.20
✎
01:34
|
(23) По существу, никакие стандарты не отменяют необходимости думать головой.
|
||||||||||||||||
27
Asmody
18.01.20
✎
01:35
|
(25) Дня два.
|
||||||||||||||||
28
palsergeich
18.01.20
✎
01:36
|
(25) Я могу этому придумать только одно оправдание в типовой - если РежимУчетаОтсрочки - это число, которое на форму выведено как поле флажка.
|
||||||||||||||||
29
Tonik992
18.01.20
✎
01:37
|
(28) Опыт подсказывает многое....
|
||||||||||||||||
30
MadHead
18.01.20
✎
01:57
|
Тот случай когда избыточность кода улучшить читаемость.
типовой вариант, он же первый |
||||||||||||||||
31
TormozIT
гуру
18.01.20
✎
08:30
|
Делаю вариант 2 и даже без скобок, если выражение простое.
альтернативный вариант, второй |
||||||||||||||||
32
Aleksey
18.01.20
✎
08:37
|
(28) почему флажок, а не радиобатон?
|
||||||||||||||||
33
Mort
18.01.20
✎
09:07
|
?(<ЛогическоеВыражение>, Истина, Ложь) - тавтология имхо
альтернативный вариант, второй |
||||||||||||||||
34
Mort
18.01.20
✎
09:09
|
Хотя второй вариант читался бы очевиднее, если бы оператор сравнения не был в написании идентичен присваиванию.
|
||||||||||||||||
35
Ненавижу 1С
гуру
18.01.20
✎
09:44
|
Я за второй вариант и когда присваивание обрамляю пробелами, а в сравнении пишу подряд:
Элементы.Календарь.Доступность = (РежимУчетаОтсрочки=1); альтернативный вариант, второй |
||||||||||||||||
36
Конструктор1С
18.01.20
✎
10:18
|
(0) хотя бы вот так
Если РежимУчетаОтсрочки = 1 Тогд РедактированиеДоступно = Истина; Иначе РедактированиеДоступно = Ложь; КонецЕсли; Элементы.Календарь.Доступность = РедактированиеДоступно; такой вариант читать и модифицировать легче других. Короткий оператор ?() лучше использовать как можно реже. Логическое условие может в любой момент усложниться. В этом случае: в программировании здорового человека оператор ?() развернут в блок Если; в программировании курильщика обязательно нагородят трудновоспринимаемую портянку в операторе ?() свой вариант (сейчас напишу) |
||||||||||||||||
37
Конструктор1С
18.01.20
✎
10:22
|
(12) такой вариант тоже годный. По феншуям тру-программирования рекомендуют выносить логические проверки в отдельные функции. Использование функций позволяет сделать код читабельнее и пояснить суть выполняемой проверки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |