|
О стандартном использовании продолжить. | ☑ | ||
|---|---|---|---|---|
|
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) ;-) Гыгыгы, в книжках по программированию вам такого не расскажут. ;-)
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |