Декомпозиция условий (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, которые описывают, как все происходит, но обычно ни слова не говорят о том, почему это происходит, можно использовать три вызова методов, которые своими содержательными именами подскажут в чем, собственно, дело.
Комментарии