[Refactoring] 구린내와 탈취 기법
구린내와 탈취 기법
구린내 | 탈취를 위한 리팩토링 기법 |
---|---|
swich문 | 조건문을 재정의로 전환 ,분류 부호를 하위클래스로 전환 , 분류 부호를 상태/전략 패턴으로 전환 , 매개변수를 메서드로 전환 , Null 검사를 널 객체에 위임 |
강박적 기본 타입 사용 | 데이터 값을 객체로 전환 , 클래스 추출 , 매개변수 세트를 객체로 전환 , 배열을 객체로 전환 , 분류 부호를 하위클래스로 전환 , 분류 부호를 상태/전략 패턴으로 전환 |
과다한 매개변수 | 매개변수 세트를 메서드로 전환 , 매개변수 세트를 객체로 전환 , 객체를 통째로 전달 |
과잉 중개 메서드 | 과잉 중개 메서드 제거 , 메서드 내용 직접 삽입 , 위임을 상속으로 전환 |
기능의 산재 | 메서드 이동 , 필드 이동 , 클래스 내용 직접 삽입 |
데이터 뭉치 | 클래스 추출 , 매개변수 세트를 객체로 전환 , 객체를 통째로 전달 |
데이터 클래스 | 메서드 이동 , 필드 캡슐화 , 컬렉터 캡슐화 |
막연한 범용 코드 | 계층 병합 , 클래스 내용 직접 삽입 , 매개변수 제거 , 메서드명 변경 |
메시지 체인 | 대리 객체 은폐 |
미흡한 라이브러리 클래스 | 외래 클래스에 메서드 추가 , 국소적 상속확장 클래스 사용 |
방대한 클래스 | 클래스 추출 , 하위클래스 추출 , 인터페이스 추출 , 데이터 값을 객체로 전환 |
방치된 상속물 | 상속을 위임으로 전환 |
불필요한 주석 | 메서드 추출 , 어설션 넣기 |
수정의 산발 | 클래스 추출 |
인터페이스가 다른 대용 클래스 | 메서드명 변경 , 메서드 이동 |
임시 필드 | 클래스 추출 , Null 검사를 널 객체에 위임 |
잘못된 소속 | 메서드 이동 , 필드 이동 , 메서드 추출 |
장황한 메서드 | 메서드 추출 , 임시변수를 메서드 호출로 전환 , 메서드를 메서드 객체로 전환 , 조건문 쪼개기 |
중복코드 | 메서드 추출 , 클래스 추출 , 메서드 상향 , 템블릿 메서드 형성 |
지나친 관여 | 메서드 이동 , 필드 이동 , 클래스의 양방향 연결을 단방향으로 전환 , 상속을 위임으로 전환 , 대리 객체 은폐 |
직무유기 클래스 | 클래스 내용 직접 삽입 , 계층 병합 |
평행 상속 계층 | 메서드 이동 , 필드 이동 |