4장: 타입 코드 처리하기

4장: 타입 코드 처리하기

간단한 if 문 리팩터링

규칙: if 문에서 else를 사용하지 말 것

결정은 어렵다 if문은 검사 로 간주 if-else 를 사용하면 의사결정으로 간주

규칙 적용

클래스로 타입 코드 대체 한다

리팩터링 패턴: 클래스로 타입 코드 대체

클래스로 타입 코드를 바꾼다

클래스로 코드 이관하기

클래스로 메소드를 이관 시키면 if문을 제거 할수 있다

리팩터링 패턴: 클래스로의 코드 이관

클래스로 타입코드 대체 패턴의 자연스러운 연장선

불필요한 메서드 인라인화

함수를 호출하는 곳으로 변경 처리

메서드 인라인화 패턴은 매서드 추출과 정확히 반대

리팩터링 패턴: 메서드의 인라인화

메서드 인라인화를 수행할 때는 모든 호출 측을 수정하여 원래 메서드를 제거 해야 한다

호출 또는 전달 한가지만 할것

긴 if 문의 리팩터링

메서드를 클래스로 이관하고 메서드를 전문화 시킨다

  • 일반성 제거
  • 리팩터링 패턴: 메서드 전문화

    규칙: switch를 사용하지 말 것

default 케이스가 없고 모든 case에 반환값이 있는 경우가 아니라면 switch문은 사용하지 말아야 한다

if 제거하기

코드 중복 처리

인터페이스 대신 추상 클래스를 사용할 수는 없을까?

사용할수 있다 하지만 몇가지 단점도 있다 인터페이스를 사용하면 개발자가 능동적으로 무엇을 해야 한다 하지만 추상클래스는 그냥 넘어 갈수 있다

규칙: 인터페이스에서만 상속받을 것

클래스에 있는 코드의 중복은 다 무엇일까?

복잡한 if 체인 구문 리팩터링

필요 없는 코드 제거하기

리팩터링 패턴: 삭제 후 컴파일하기

참조