"Правильный" стиль кодирования...

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 1 окт 2008.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Часто ли вы используете Exit sub? и правильно ли это?
    Как бы вы поступили:
    Код (Text):
    if nd is nothing then Exit Sub
    или же
    Код (Text):
    if not nd is nothing then...
    ?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Правильно.

    Про правильность можешь почитать на вики.
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    ну вот конкретно в такой ситуевине - яб подумал об: Error CUSTOM_ERRCODE, CUSTOM_DESCRIPTION
    тока On Error Goto 0 (возвратил бы обработчик)
    все-таки nothing объекта это не совсем "штатно" :rolleyes:
    а снаружи обработка

    почему так - автоматом выйдет из ф-ции/процедуры (и не нужно знать - что это конкретно) и позволит вызывающему коду решить

    0, null, Nothing, местами "" - это дефолтные инициализаторы и совпадение с ними может служить сигналом о нештатном поведении
     
  4. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    по моему, как раз наоборот.. качество программирования заключается в качестве обработки исключительных ситуаций
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    На мой взгляд, множественные выходы из программы это нормально.
    Особенно в начале процедуры при разлчиных проверках.
    Потому что многоступенчатые if слабо читаемы.

    Применительно к этому случаю, imho, вполне нормально выйти при несужествовании обьекта документа.
    Я так частенько на QueryOpen формы пишу, ибо при открытии нового документа doc будет Nothing, а уже сущестующего - Thing :rolleyes:
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    все зависит от того, что мы хотим получить в каждом конкретном случае...
    в любом случае, выход из процедуры не является "плохим" вариантом,
    плохо будет работать потом, после исполнения процедуры...
    объясню, процедуры могут быть определяющими дальнейшую обработку, либо не определяющими (это не стандарт, просто так назвал), т.е. если после исполнения процедуры нам важно работать с каким-либо результатом ее действий, то процедура должна быть определяющей.
    для определяющих процедур лучше использовать функции, т.к. их результат легче обработать, но можно использовать процедуры, которые возвращают результат как параметр.
    если процедура не определяющая, то свободно можно использовать выход из процедуры, в крайнем случае, нам потребуется дополнительное оповещение пользователя о неудачном выполнении процедуры:
    Код (Text):
    if badCondition then
    Messagebox "Bad condition"
    exit sub
    end if
    если процедура определяющая, то придется добавить какой-то результат ее работы:
    Код (Text):
    if badCondition then
    error 1000, "Bad condition"
    end if
    Код (Text):
    if badCondition then
    result = errCode
    exit sub
    end if
    я бы рекомендовал все процедуры писать как определяющие, в таком случае это не приведет к необходимости ее исправления при надобности, а затраты почти нулевые, т.к. в любом случае в процедуры добавляются обработчики ошибок, а в обработчике это все дело легко реализуется... если вы не используете обработчики, я рекомендую начать :)
    единственное, что иногда труднее определить как именно отображать ошибку наверх, т.е. тут два варианта:
    1) сгенерировать исключение и передать его в вызывающую процедуру, которая в свою очередь должна будет обработать его;
    2) просто вернуть флаг исключение, например result = false, а вызывающая процедура смотрит
    Код (Text):
    if mysub() then
    дальнейшая работа
    else
    обработка неудачной ситуации
    end if
     
Загрузка...
Похожие Темы - Правильный стиль кодирования
  1. May-day
    Ответов:
    5
    Просмотров:
    1.725
  2. tumanovalex
    Ответов:
    1
    Просмотров:
    1.272
  3. BlackShadow
    Ответов:
    5
    Просмотров:
    3.377
  4. ToxaRat
    Ответов:
    11
    Просмотров:
    3.998
  5. NickProstoNick
    Ответов:
    1
    Просмотров:
    843

Поделиться этой страницей