|
Как правильно писать для красоты кода редкое условие. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
28.11.12
✎
16:48
|
Есть некоторое условие Х, но оно встречается редко, т.е. описывает частный случай.
Как правильно писать: Если НЕ Х Тогда Код1; Иначе Код2; КонецЕсли; Или: Если Х Тогда Код2; Иначе Код1; КонецЕсли; Суть вопроса в том, чтобы более часто используемый код описывался сначала, а частные случаи - позже. Или все же общий - в конце? Или как-то по другому? |
|||
1
YF
28.11.12
✎
16:49
|
(0) Лучше второй вариант - при наличии Иначе изврат делать в условии общее Не
|
|||
2
Kashemir
28.11.12
✎
16:50
|
Какая разница - переход будет в любом случае
|
|||
3
vii88
28.11.12
✎
16:50
|
я смотрю по смыслу Код1 и Код2, если код1 основной, а код2 дополнительный, то делаю чтобы первый был код1
а если они равнозначны, то первым пишу тут чтобы без "Не" |
|||
4
Wobland
28.11.12
✎
16:50
|
(0) извращенец
|
|||
5
Maxus43
28.11.12
✎
16:51
|
второй - читабельней. пожалей тех кто будет за тобой косяки править
|
|||
6
Reset
28.11.12
✎
16:55
|
(0)
"Суть вопроса в том, чтобы более часто используемый код описывался сначала, а частные случаи - позже. Или все же общий - в конце?" Без разницы в общем случае. Частные случаи можно подобрать как под один так и под другой вариант. Обсуждения, имхо, не стОит. |
|||
7
mikecool
28.11.12
✎
16:56
|
(0) сейчас производительность процессоров такова, что никто инверсию и не заметит в твоем копрокоде )))
|
|||
8
Гений 1С
гуру
28.11.12
✎
16:56
|
(6) я порой думаю о красоте кода. Не хотелось бы описывать редкие исключения раньше по ходу модуля, чем общий случай. Как-то оно бросается в глаза.
|
|||
9
Гений 1С
гуру
28.11.12
✎
16:57
|
(7) Я не о скорости вопрос задал, а о красоте
|
|||
10
НЕА123
28.11.12
✎
16:57
|
(6)+1
не ассемблере пишем. |
|||
11
Xapac_2
28.11.12
✎
16:58
|
лучше так
Если Х Тогда Код2; Иначе Код1; КонецЕсли; ибо можно делать так Если Х Тогда Код2; ИначеЕсли Х Тогда Код3; ИначеЕсли Y Тогда Код4; ИначеЕсли Z Тогда Код5; Иначе |
|||
12
Chai Nic
28.11.12
✎
16:58
|
И вот еще варианты: "не(а=б)", "a<>b". Что лучше в смысле понимания?
|
|||
13
Xapac_2
28.11.12
✎
16:59
|
а вообще лучше сделать так:
class Object calculate(){Код2} class Object_1 override calculate(){Код1} |
|||
14
Xapac_2
28.11.12
✎
16:59
|
(13) где Object_1 порожден от Object
|
|||
15
acsent
28.11.12
✎
17:00
|
(12) по стандарту 1с a<>b
|
|||
16
mikecool
28.11.12
✎
17:00
|
(9) кому нафик нужна красота? главное - чтобы работало правильно и быстро
|
|||
17
mikecool
28.11.12
✎
17:01
|
+16 пользователю глубоко нас-рать на красоту кода...
|
|||
18
Гений 1С
гуру
28.11.12
✎
17:01
|
(16) я олд-скул, мне нужна красота в коде
|
|||
19
mikecool
28.11.12
✎
17:02
|
(18) такими скулами похвастать может каждый, и каждой школы свои тараканы в голове...
|
|||
20
acsent
28.11.12
✎
17:03
|
(18) Если тебе нужна красота, то: Отрицательные условия читаются гораздо хуже
|
|||
21
МишКа
28.11.12
✎
17:03
|
(0) Правильно писать в три ветки. Третья - для условия, которое не встречается никогда.
|
|||
22
mikecool
28.11.12
✎
17:03
|
(18) и это - объясни , в чем прелесть отрицания?
|
|||
23
Лефмихалыч
28.11.12
✎
17:07
|
(0) ты ошибаешься, если думаешь, что тебя это каким-то образом спасет
|
|||
24
Serg_1960
28.11.12
✎
17:09
|
Уникальность условия можно подчеркнуть не разделением основного потока алгоритма, а внесением изменения в основной поток (круто загнул) :)
... Четыре = 2 х 2; Если Гений_1С = Истина Тогда Четыре = 5; КонецЕсли; ... |
|||
25
orefkov
28.11.12
✎
17:13
|
(24)
Это 1С. В нем "Если Условие" и "Если Условие = Истина" - немного разные вещи... |
|||
26
samozvanec
28.11.12
✎
17:16
|
(25) чем же?
|
|||
27
samozvanec
28.11.12
✎
17:17
|
(0) под условие Иначе могут разные вещи попадать, поэтому все зависит от условия и вариантов Иначе
|
|||
28
Reset
28.11.12
✎
17:21
|
(26) наличием составных типов напр
|
|||
29
ManyakRus
28.11.12
✎
17:22
|
отрицание НЕ вообще никогда не надо писать.
Код должен быть легким чтоб его читать как книжку слева на право, а не посмотреть что справа а потом проотрицать слева. |
|||
30
orefkov
28.11.12
✎
17:23
|
(26)
Если в Условие - Неопределено, то "Если Условие Тогда" - вылетит с ошибкой "Преобразование значения к типу Булево не может быть выполнено" а "Если Условие = Истина Тогда" - без ошибок перейдет в Иначе. |
|||
31
mikecool
28.11.12
✎
17:23
|
(29) не вижу смысла такой категоричности
|
|||
32
samozvanec
28.11.12
✎
17:24
|
(28) если у ваши условия могут вернуть не только булево, но и ссылку на план счетов, или там Неопределено, для такого кода название существуют очень давно
|
|||
33
samozvanec
28.11.12
✎
17:25
|
(32) и к (29) тоже относится
|
|||
34
Reset
28.11.12
✎
17:25
|
(31) и к (32) тоже относится ;)
|
|||
35
samozvanec
28.11.12
✎
17:26
|
(33) равно как и к 34 8)
|
|||
36
Гений 1С
гуру
28.11.12
✎
17:28
|
(24) лишний прогон кода не есть хорошо для скорости
|
|||
37
Гений 1С
гуру
28.11.12
✎
17:29
|
(31) Не можно использовать, но по другому.
Если у вас есть отрицание в услоии, нужно писать так. ТоварИсключительный = НЕ Товар.ВидТовара = "Бук"; Если ТоварИсключительный Тогда ... КонецЕсли; Тогда Не не замыливает глаз |
|||
38
Reset
28.11.12
✎
17:29
|
(35) Я запутался в ваших goto, шеф :)
Думаю меня вы поняли |
|||
39
acsent
28.11.12
✎
17:30
|
И этот копрокод красив?
ТоварИсключительный = НЕ Товар.ВидТовара = "Бук"; |
|||
40
qeos
28.11.12
✎
17:32
|
функция сравнитьРезультат(условие, резИстина, резЛожь)
|
|||
41
acsent
28.11.12
✎
17:34
|
(40) Такая функция уже есть "?"
|
|||
42
pessok
28.11.12
✎
17:40
|
(37) очешуенно читабельно...
|
|||
43
Гений 1С
гуру
28.11.12
✎
17:49
|
(39) Условие должно вычисляться отдельно и сохраняться в переменную с читаемым названием, в названии которой нет НЕ
|
|||
44
Sidney
28.11.12
✎
17:51
|
(0)Если можешь не писать - не пиши.
Сказал как то один уважаемый человек. И я, глядя на тебя, полностью с ним согласен. |
|||
45
Гений 1С
гуру
28.11.12
✎
18:03
|
(44) ты не художник
|
|||
46
hhhh
28.11.12
✎
18:08
|
(45) ну если запрос к базе занимает 99.99% времени, а всё остальное 0,01%, то вы наверно сильно чего-то накурились, что ищете резервы скорости в присваивании значения булевой переменной.
|
|||
47
Chai Nic
28.11.12
✎
18:09
|
А еще функции (особенно булевские) в принципе не должны иметь императивного названия! Функция на то и функция, что не является процедурой...
Просто убивают такие конструкции в типовых: "Если ПроверитьЗначенияРеквизита(Реквизит) тогда" Это кошмар какой-то.. |
|||
48
Mort
28.11.12
✎
18:32
|
Так, конечно же лучше:
Если Х Тогда Код2; Иначе Код1; КонецЕсли; |
|||
49
Йохохо
28.11.12
✎
18:41
|
так
// Если не редкая >|<опа, делаем, как обычно Если НЕ Х Тогда Код1; Иначе Код2; КонецЕсли; |
|||
50
Vladal
28.11.12
✎
18:51
|
(48) Что посоветуешь для этого кода?
http://s52.radikal.ru/i137/1207/77/6ea15989e208.png |
|||
51
Vladal
28.11.12
✎
18:51
|
(50) к (51)
|
|||
52
GLazNik
28.11.12
✎
18:52
|
(50) ctrl-a + delete ^)
|
|||
53
Chai Nic
28.11.12
✎
19:02
|
(50) Впечатляет. Только глВозвестиВСтепеньЧисло некорректно реализовано.
|
|||
54
ПесняПроЗайцев
28.11.12
✎
19:07
|
?(,,)
|
|||
55
ПесняПроЗайцев
28.11.12
✎
19:07
|
вот ? сделали, а ++ нет. все таки 1с делали обкуренные.
|
|||
56
Гений 1С
гуру
28.11.12
✎
19:11
|
(50) это мой ночной кошмар.
|
|||
57
ПесняПроЗайцев
28.11.12
✎
19:14
|
(50) Это просто конгениально. Напоминает мне пору писания на с++.
|
|||
58
TormozIT
гуру
28.11.12
✎
20:26
|
Обычно короткие ветки условия я располагаю спереди, чтобы читать код было проще.
|
|||
59
Гений 1С
гуру
29.11.12
✎
13:53
|
(58) вот то то и оно, что часто используемый код обычно короче, чем редко. ;-)
|
|||
60
Mort
29.11.12
✎
14:04
|
длинных веток условий вообще не должно существовать.
|
|||
61
Mort
29.11.12
✎
14:05
|
+(60) И циклов. И вообще процедур.
|
|||
62
mikecool
29.11.12
✎
14:08
|
Серега, у тебя какое то очередное обострение?
Какая нафик красота кода? Код должен быть работоспособен и быстр... |
|||
63
Mort
29.11.12
✎
14:08
|
А код в (50) может быть и неплохой. Тока раскидать по строкам.
|
|||
64
Гений 1С
гуру
29.11.12
✎
14:17
|
(62) я привык писать красиво
|
|||
65
acsent
29.11.12
✎
14:18
|
(64) красиво это как в (39)
|
|||
66
Reset
29.11.12
✎
14:30
|
(64) Что значит "красиво"?
Оптимально(по разным критериям) - может быть. Читаемо (то же могут быть разные "стандарты" и точки зрения)- может быть. Красиво? - что это? Не ну я понимаю, иногда можно назвать "красивым" какое-то удачное(иногда, может, нестандартное) решение, алгоритм и тп. Сабж же - это с какой стороны к монитору бантик привесить. |
|||
67
Infsams654
29.11.12
✎
14:39
|
(0) "... а кому свиной хрящик"
|
|||
68
Defender aka LINN
29.11.12
✎
14:39
|
(64) За последние 3 часа успел, или когда?
|
|||
69
tdm
29.11.12
✎
14:42
|
(64) а чем не нравится : =?(X,Код2,Код1);
|
|||
70
tdm
29.11.12
✎
14:43
|
(54) +1, не заметил)))
|
|||
71
Chai Nic
29.11.12
✎
14:52
|
(66) "Красиво" - это когда достигнут баланс между читаемостью (поддерживаемостью) и производительностью(затратами ресурсов).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |