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

Декомпозиция условий (Decompose Conditional)

Есть сложный if-then-else оператор.

Условие, блок then, блок else вынести в отдельные методы.

if (date.before(SUMMER_START) || date.after(SUMMER_END))

charge = quantity * _winterRate + _winterServiceCharge;

else charge = quantity * _summerRate;

if (notSummer(date))

charge = winterCharge(quantity);

else charge = summerCharge(quantity);

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