Обзор темы [Рефакторинг кода]

Замена вставленных условий предохраняющими

(Replace Nested Conditional with Guard Clauses)

Метод обладает поведением, зависящим от условий, причем невиден обычный путь выполнения программы.

Использовать предохраняющие условия для исключительных ситуаций.

 

double getPayAmount() {

double result;

if (_isDead) result = deadAmount();

else {

if (_isSeparated) result = separatedAmount();

else {

if (_isRetired) result = retiredAmount();

else result = normalPayAmount();

};

};

return result;

};

double getPayAmount() {

if (_isDead) return deadAmount();

if (_isSeparated) return separatedAmount();

if (_isRetired) return retiredAmount();

return normalPayAmount();

};

Когда применяется обычная конструкция if-then-else, обычно подразумевается, что обе ветви равноправны. Если же условие ставиться на какой-то исключительный случай, то лучше сформулировать его в виде отдельного предохраняющего if оператора, при выполнении условия которого будет что-то делаться и будет производиться выход, а операторы, соответствующие обычному выполнению программы поместить в конце и без условий.