Полезно ли добавлять дополнительные проверки в отключенные параметры графического интерфейса? - PullRequest
0 голосов
/ 05 января 2011

Я имею в виду следующее:

void setup_gui()
{
    if (some_condition)
        some_button.disable();

    ...
}

void some_button_click()
{
    // Is this a good practice?
    if (some_condition)
        return;

   ...
}

Добавление этой проверки гарантирует, что программа не будет запускать операцию, но это также можно рассматривать как скрывающую ошибку (some_button_click () не должнабегали вообще).

Итак, что вы думаете об этом?Это безопасная практика кодирования или сокрытие ошибки?

Ответы [ 4 ]

2 голосов
/ 05 января 2011

Защитное программирование столь же разумно, как и защитное вождение.

Может быть полезно подумать об этом с точки зрения отдельных проблем.Одной из проблем является презентация.Другим может быть набор бизнес-правил.Целесообразно сделать одинаковую проверку в обоих местах.

Вы хотите выполнить проверку на уровне представления для связи с пользователем.

Вы также можете выполнить проверку под уровнем представления:

  • Защита от настоящих и будущих ошибок в уровне представления.
  • В случае, если код под уровнем представления повторно используется в другом месте.
  • [Из комментария mvds] В случае, если условие может измениться, так как элемент управления был включен или отключен.

Редактировать: Рассматриваемая ниже задача СУХОГО Дэвида Хеффернана может быть тривиально решена путем точного определения условия и обращения к нему в другом месте.

void setup_gui()
{
    some_button.setEnabled( context.isThisActionAvailable() );

    ...
}

void some_button_click()
{
    if ( context.isThisActionAvailable() )
        return;

   ...
}
1 голос
/ 05 января 2011

Я не беру этот пояс и брекеты подходят.Проблема в том, что вы нарушили принцип СУХОГО с двойным использованием some_condition.Легко изменить это в одном месте, а не в другом.

Конечно, в этом вымышленном примере some_condition довольно просто, но в действительности оно часто намного сложнее.

ЕслиВы не можете доверять своей структуре GUI, чтобы блокировать действия, когда вы запрашиваете их блокировку, тогда вам нужно исправить структуру.

0 голосов
/ 05 января 2011

Тихий возврат в some_button_click() потенциально скрывает ошибку.Я бы не стал делать чек вообще, или громко и сильно рухнул.

0 голосов
/ 05 января 2011

Это можно считать безопасным кодированием, а также сокрытием ошибки.Это время, когда, возможно, вам следует пересмотреть логику вашей программы.Избыточность кода всегда лучше избегать, если это возможно.Было бы лучше, если бы ваша программа была структурирована таким образом, чтобы ее не нужно было проверять дважды, следя за тем, чтобы действительная логика программы работала правильно и по назначению.

Конечно, если вы спешите, это быстрое решение, и оно работает, но оно пахнет плохим дизайном и / или логикой в ​​других местах программы.

...