Имя: Пароль:
1C
1С v8
Философский вопрос об оформлении кода - 2
0 quest
 
03.06.12
19:13
1. 1 Вариант 50% (5)
2. 2 Вариант 50% (5)
Всего мнений: 10

что-то потянуло меня пофилософствовать.
есть 2 процедуры. Функция УсловиеВыполняется возвращает либо истину либо ложь.

процедура Вариант1(ЛюбаяКоллекция)
   Для Каждого х из ЛюбаяКоллекция цикл
       если не УсловиеВыполняется(х) тогда
           Продолжить;
       КонецЕсли;
       ....
       Тут какие-то действия с элементом коллекции
       ....
   КонецЦикла;
КонецПроцедуры


процедура Вариант2(ЛюбаяКоллекция)
   Для Каждого х из ЛюбаяКоллекция цикл
       если  УсловиеВыполняется(х) тогда
       ....
       Тут какие-то действия с элементом коллекции
       ....
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры

Какой из вариантов оформленя кода для вас предпочтительней?
1 aleks-id
 
03.06.12
19:47
монопенисуально
3 Вариант.
2 МихаилМ
 
03.06.12
20:22
это описано в "совершенный код"
3 Torquader
 
03.06.12
20:25
Первый вариант предпочтительней, если сложное условие,
так как его можно разбить на несколько (Если Подусловие(х) Тогда Продолжить;КонецЕсли)

Второй вариант предпочтительнее в случае, когда планируется изменение кода, так как дописать в цикл два разных действия при различных условиях будет значительно проще:
Если Условие1(Эл) Тогда
Обработка1(Эл)
КонецЕсли;
Если Условие2(Эл) Тогда
Обработка2(Эл);
КонецЕсли;
4 DrShad
 
03.06.12
20:37
да что же за фигня, (0) отсыпь уже - хочу чтоб и меня так торкунуло в выходной-то день
5 quest
 
03.06.12
20:42
(4) кому выходной, а кому и работать приходиться....
6 aleks-id
 
03.06.12
20:43
(5) судя по темам не приходится ;)
7 quest
 
03.06.12
20:44
(6) это просто что бы отвлечься...
8 quest
 
03.06.12
20:45
нельзя же все время только о работе думать.
9 IamAlexy
 
03.06.12
20:46
мне первый нравится больше...
удобнее

когда в конце функции пролистаешь не надо разбираться в бесконечных

конецесли;
конецесли;
конецесли;
конецесли;
конецесли;
конецесли;
конецесли;


и высчитывать где ты там очередное "конецесли;" забыл поставить
10 Азазелло
 
03.06.12
20:49
+ еще в одну строку Если ... Тогда Продолжить КонецЕсли;

1 Вариант
11 0_Serg_0
 
03.06.12
21:41
удобнее если надо  будет изменить код (добавить условий)

1 Вариант
12 experimentator76
 
03.06.12
22:25
пользую интуитивно оба варианта
тему можно закрывать
13 vde69
 
03.06.12
22:31
первый вариант проще читать

второй вариант прощще расширить (сделать несколько вариантов)

использую оба
14 acsent
 
03.06.12
22:58
(13) написать 1 лишнюю строчку - как сложно однако
15 dklushin
 
03.06.12
23:12
"Функция УсловиеВыполняется возвращает либо истину либо ложь."(0)

Спасибо что прояснил, кэп.
16 dklushin
 
03.06.12
23:18
по теме: конечно вариант 2. Вариант 1 это быдлокод, зачем было писать "продолжить;" если это не сократило ни количество переменных, ни количество конструкций языка?

(9) посмотри внимательно, в обоих вариантах одинаковое количество циклов и условий.

2 Вариант
17 dklushin
 
03.06.12
23:19
вообще злоупотреблять операторами безусловного перехода не стоит даже в 1с.
18 experimentator76
 
03.06.12
23:28
они в 1С не нужны
19 dklushin
 
03.06.12
23:30
(18) ну тот же "продолжить" нужен, когда ищешь элемент в массиве, нашёл, зачем продолжать цикл? приходится брейк вызывать.
20 КонецЦикла
 
03.06.12
23:32
Первый рулит имхо, сразу понятно что отсекается (читабельнее что ли)
21 IamAlexy
 
03.06.12
23:32
(16) внимательно мой пример почитай и подумай еще раз..
22 experimentator76
 
03.06.12
23:35
(19) я подумал про GOTO
продолжить - неявный переход
23 IamAlexy
 
03.06.12
23:36
(19) фантазию включи.. если надо обработать 2 строки а не одну..
а если вдруг о боже - целых три строки?
или, чем черт не шутит, аш невообразимых ЧЕТЫРЕ строки???
24 quest
 
03.06.12
23:36
голосовать не забывайте, а?
И аргументировать почему вам нравиться тот или иной вариант.
все таки хочется собрать статистику.
25 quest
 
03.06.12
23:37
(22) попытка/исключение - это тоже неявное гото. и что? смысл его бояться?
26 IamAlexy
 
03.06.12
23:37
статистика

1 Вариант
27 IamAlexy
 
03.06.12
23:37
на мисте

2 Вариант
28 IamAlexy
 
03.06.12
23:37
как правлио

1 Вариант
29 IamAlexy
 
03.06.12
23:37
несколько не отражает

2 Вариант
30 IamAlexy
 
03.06.12
23:37
статистику

1 Вариант
31 quest
 
03.06.12
23:40
в теперь бы еще аргументацию к постам с (26) по (30) :)
32 dklushin
 
03.06.12
23:40
(21) подумал. В какой-то степепи проще. Не стоит того)
(23) да хоть стотыщ? ты хочешь сказать, чтио второй вариант будет медленнее?

(25) вот за это в цикле руки отрывают. Попытка/исключение очень медленный процесс. Лучше 100 проверок, если это возможно, чем выполнение кода в попытке.

2 Вариант
33 IamAlexy
 
03.06.12
23:41
аргументация простая - любой мистятен может в одной и той же ветке проголосовать любое количество раз, причем за разные варианты...

ВР грит типа это правильнее..

Это я к тому что голосовалка на мисте носит единственный смысл - нетопить длинные ветки
34 IamAlexy
 
03.06.12
23:45
(32) 1. ага.. во всех степенях проще.. когда у тебя процедура/функция в пять-семь скринов вмещается, то есть ты ее всю сразу не видишь - реально подбешивает когда у тебя в конце процедуры/фуннкции собрана хрень типа

конецЕсли;
конецЕсли;
конецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;


и проверка ругается на то что где то этот конец... лишний.. или его наоборот нехватает..

а первый вариант позволяет упростить, уменьшить количство вложенностей условий.. сразу

2. я про скорость ничего не говорил - речь сугубо про удобочитаемость кода и удобство дальнейшей модификации оного.

3. всем плевать что ты в цикле делаешь если у тебя в целом программа работает так как она должна работать..
задрачиваться на эфимерное "попытка медленнее чем если" и приэтом делать неоптимальные запросы - смысла мало..
35 dklushin
 
03.06.12
23:55
(34)

вот 3 пункт твой главный аргумент: "какая тебе нафиг разница, всё равно работает".
Про неоптимальные запросы ничего не говорил, я за то, чтобы писать оптимальные.

про 1й пункт: концов цикла тоже дофига будет. Можно при написании помечать их одинково, например "Начало условия 1: конец условия 2" Если ты нашёл для себя приём бороться с неудобством среды(нельзя выделять начало и конец конструкции) то это не значит что он крут. Он быдлокоден, и всего.

2 Вариант