4장: 타입 코드 처리하기
간단한 if 문 리팩터링
규칙: if 문에서 else를 사용하지 말 것
결정은 어렵다 if문은 검사 로 간주 if-else 를 사용하면 의사결정으로 간주
규칙 적용
클래스로 타입 코드 대체 한다
리팩터링 패턴: 클래스로 타입 코드 대체
클래스로 타입 코드를 바꾼다
클래스로 코드 이관하기
클래스로 메소드를 이관 시키면 if문을 제거 할수 있다
리팩터링 패턴: 클래스로의 코드 이관
클래스로 타입코드 대체 패턴의 자연스러운 연장선
불필요한 메서드 인라인화
함수를 호출하는 곳으로 변경 처리
메서드 인라인화 패턴은 매서드 추출과 정확히 반대
리팩터링 패턴: 메서드의 인라인화
메서드 인라인화를 수행할 때는 모든 호출 측을 수정하여 원래 메서드를 제거 해야 한다
호출 또는 전달 한가지만 할것
긴 if 문의 리팩터링
메서드를 클래스로 이관하고 메서드를 전문화 시킨다
default 케이스가 없고 모든 case에 반환값이 있는 경우가 아니라면 switch문은 사용하지 말아야 한다
if 제거하기
코드 중복 처리
인터페이스 대신 추상 클래스를 사용할 수는 없을까?
사용할수 있다 하지만 몇가지 단점도 있다 인터페이스를 사용하면 개발자가 능동적으로 무엇을 해야 한다 하지만 추상클래스는 그냥 넘어 갈수 있다