Refactoring Examples 

Examples from Martin Fowler's Book:

Refactoring Improving the design of Existing Code,

Addison Wesley, 2001, ISBN 0201485672

 

 

Example 1:  Which code is easier to understand?  Why?

 

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();
}
 

 


1_Answer

 

 

Example 1:  Which code is easier to understand?  Why?

 

 if (!isSummer(date))
  charge = winterCharge(quantity);
 else
  charge = summerCharge(quantity);
 if (isSummer(date))
  charge = summerCharge(quantity);
 else
  charge = winterCharge(quantity);

2_Answer