Имя: Пароль:
1C
 
О стандартном использовании продолжить.
0 Гений 1С
 
гуру
16.03.08
21:06
Я для себя выработал такой стандарт кодинга.
Вот два варианта:

Если Условие1 Тогда
 Если Условие2 Тогда
   Если Условие3 Тогда
     ...
   КонецЕсли;
 КонецЕсли;
КонецЕсли;

Если НЕ Условие1 Тогда
 Продолжить; //или Возврат
КонецЕсли;
Если НЕ Условие2 Тогда
 Продолжить; //или Возврат
КонецЕсли;
Если Условие3 Тогда
   ...
КонецЕсли;

Я предпочитаю второй способ, т.к. код более читаемый...
1 Френсис Дрейк
 
16.03.08
21:19
ух ты, ты действительно гений
2 Собеседник
 
16.03.08
21:24
(0) наверое так
Пока 1=1 Цикл

Если НЕ Условие1 Тогда
 Прервать; //или Возврат

КонецЕсли;
Если НЕ Условие2 Тогда
 Прервать; //или Возврат

КонецЕсли;
Если Условие3 Тогда
   ...
КонецЕсли;
Прервать;
КонецЦикла
3 Варвар
 
16.03.08
21:33
(0) не видно Ваших вариантов.
4 alex1974
 
16.03.08
22:05
С продолжить - да, согласен, более красиво и с точки зрения производительности потерь не вижу, а вот вызывать возврат внутри цикла мне вспоминается почему-то плохим стилем кодинга, но вот почему - не помню :)
Возможно, есть опасность не дойти до вызова delete, но в 1С, вроде сама платформа следит за очищением кучи (правда, следит не очень-то хорошо)
5 Гений 1С
 
гуру
16.03.08
22:16
Под возвратом подразумевался выход из процедуры (если условие применяется на уровне процедуры) или продолжить (если условие используется внутри цикла).
Просто такой подход позволяет избавиться от многоэтажных если. ;-)
6 Мебиус
 
16.03.08
22:24
Давно уже так пишу
да, лучше чем КонецЕсли разбирать
7 BabySG
 
16.03.08
22:27
(5) Обойтись без многоэтажки - это хорошо, но плохо тем, что код ДОЛЖЕН доходить до конца процедуры. Для того, что бы можно было отловить состояния переменных и понять, где бага, а то, когда куча выходов посредине кода - попробуй поймать ошибку.
8 PR
 
16.03.08
22:28
(7) код ДОЛЖЕН доходить до конца процедуры?!
LOL
А что он еще должен? :)))
9 Мебиус
 
16.03.08
22:30
(7)Зато очень удобно при обработке списка
сразу четко видим условия выхода - что не обрабатваеи  
А то если 5 условий, а тело на 300 строк - очень убого выглядит
10 Мебиус
 
16.03.08
22:31
(7) Логика не понятна
11 BabySG
 
16.03.08
23:32
(8)(9)(10) Логика становиться понятна, когда в 200 строк кода есть 10 возвратов и попробуй отловить, на каком выход происходит.
По поводу должен - именно к этому и относиться. Выход из функции (в хорошем стиле) всегда производиться последней строкой.

К примеру:

Функции ВозвратаНечто()
  Если А = 1 Тогда
     Возврат 10;
  Иначе
     Возврат 11;
  КонецЕсли;
КонецФункции;

является примером плохого тона, такой код пишется так:


Функции ВозвратаНечто()
  Перем Результат;

  Результат = Неопределено;

  Если А = 1 Тогда
     Результат = 10;
  Иначе
     Результат = 11;
  КонецЕсли;

  Возврат Результат;
КонецФункции;

Собственно, отлаживать второй пример намного легче и понятнее...

PS. Собственно, ЛЮБЫЕ условия можно переписать достаточно красиво и понятно, что не раз уже было обсосано на многих форумах. Исключения составляют случаи экстремального программирования, к чему программирование на 1С отнести сложно :)
12 selenat
 
16.03.08
23:43
(8)+1 (11) ИМХО фигня. На каком возврате выход происходит - как правило знать нафиг не нужно. Бывает нужно знать по каким операторам проходим, а по каким нет. Даже обычные Если ... КонецЕсли при этом заставляют копаться в коде подробнее, смотреть на конец процедуры не помогает. А при наличии отладчика все это отслеживается элементарно...
13 Мебиус
 
16.03.08
23:51
(11) Во первых не возврат а продолжить
две большие разницы
во вторых кто мешает структурировать Продолжить в начале обработки списка
это намного удобнее чем возиться с уроддивейшей констукцией возниукающей если использовать КонецЕсли

Если  Тогда
  Продолжить;
КонецЕсли;
Если  Тогда
  Продолжить;
КонецЕсли;
Если  Тогда
  Продолжить;
КонецЕсли;
Если  Тогда
  Продолжить;
КонецЕсли;
Если  Тогда
  Продолжить;
КонецЕсли;
Тело модуля

или  
   Если Тогда
       Если Тогда
           Если Тогда
               Если Тогда
                   Если Тогда
                       Тело модуля на 300 строк
                   КонецЕсли;    
               КонецЕсли;    
           КонецЕсли;    
   КонецЕсли;
14 Terv
 
16.03.08
23:52
(0) Поздравляю... за 10 лет работы наконец то дошло то, что другие понимают на 2й год работы
прогресс...
15 Мебиус
 
16.03.08
23:58
(13) вообще то все понимают на первый
16 Terv
 
17.03.08
00:02
(15) ну я взял максимум...
17 Stepa86
 
17.03.08
07:11
Я вот в порыве страсти (вдохновения) обычно пишу код так,как представляю в мозге,и поэтому многие конструкции потом сложно воспринимать,хоть и расставляю комментарии,а переписывать покрасивее так лень,когда и так все работает...
18 Гений 1С
 
гуру
17.03.08
09:46
(16) ;-) Гыгыгы, в книжках по программированию вам такого не расскажут. ;-)