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

Введение предусловий (Introduce Assertion)

Некоторый код работает при определенном состоянии программы.

Выполнять проверку этого состояния с помощью предусловия.

 

double getExpenseLimit() {

// should have either expense limit or a primary project

return (_expenseLimit != NULL_EXPENSE) ?

_expenseLimit :

_primaryProject.getMemberExpenseLimit();

}

double getExpenseLimit() {

assert.isTrue (_expenseLimit != NULL_EXPENSE || _primaryProject != null);

return (_expenseLimit != NULL_EXPENSE) ?

_expenseLimit :

_primaryProject.getMemberExpenseLimit();

}

Вместо чем строить предположения о результате какого-то выражения, важного для корректного выполнения последующего кода, можно описать класс предусловий и явно проверять значение этого выражения.

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