어떤 프로그램이건 가장 기본이 되는 것이 함수다.
  1. 작게 만들어라!

(1) 블록과 들여쓰기 : if문 / else문 / while 문 등에 들어가는 블록은 한줄이 되도록 하라

  1. 한 가지만 해라
  1. 함수당 추상화 수준은 하나라
  1. Switch문
public Money calculatePay(Employee e) throws InvalidEmployeeType{
	switch(e.type){
		case COMMISIONED : return calculateCommissionedPay(e);
		case HOURLY      : return calculateHourlyPay(e);
		case SALARIED    : return calculateSalariedPay(e);
		default          : throw new InvalidEmployeeType(e.type);
	}
}
public abstract class Employee {
	public abstract boolean isPayday();
	public abstract Money calculatePay();
	public abstract void deliveryPay(Money pay);
}

-----------------------------

public interface EmployeeFactory {
	public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType;
}

-----------------------------

public class EmployeeFactoryImpl implements EmployeeFactory {
	public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType{
		switch(e.type){
			case COMMISIONED : return new CommissionedEmployee(r);
			case HOURLY      : return new HourlyEmployee(r);
			case SALARIED    : return new SalariedEmployee(r);
			default          : throw new InvalidEmployeeType(r.type);
		}
	} 
}