가독성이 낮고 중복된 로직을 말함
발생 원인 : 주석 없음, 중복 로직, 복잡한 조건
메소드 정리 | Extract Method | 그룹으로 묶을 수 있는 코드의 메소드 추출 |
Replace Parameter with Method | 객체가 메소드를 호출한 다음, 결과를 다른 메소드에 매개변수로 넘기고 있으면 수신자가 그 메소드를 호출하도록 하는 작업 | |
객체 간 기능 이동 | Extract Class | 두 개의 클래스가 해야할 일을 하나의 클래스가 하는 경우, 새로운 클래스를 생성해 필드와 메소드를 이전 |
Extract Subclass | 어떤 클래스가 일부 인스턴스에 의해서만 사용되는 기능을 가지고 있다면, 인스턴스만 사용하는 기능을 담당하는 서브클래스를 만드는 작업 | |
🌠Extract Interface(Super class) | 여러 클라이언트가 한 클래스의 인터페이스의 동일한 부분집합을 사용하고 있다면 부분집합을 인터페이스로 추출 | |
이름 | Rename Method | 메소드 이름이 목적을 드러내도록 이름 변경 |
추측성 일반화 | Inline Method | 메소드의 본문이 메소드 이름만큼 명확하다면 해당 본문을 메소드를 호출하는 호출자 안으로 옮기고 메소드를 삭제 |
Collapse Hierarchy | 슈퍼클래스와 서브클래스가 별로 다르지 않다면 하나로 통합 | |
중복 | Replace Magic Number with Symbolic constant | 특별한 의미를 갖는 숫자 리터럴 존재 시 상수를 만들어 의미가 잘 드러나도록 이름을 짓고 숫자를 상수로 대체하는 방법 |
Pull up Method | 동일 기능 메소드를 슈퍼클래스로 이동 | |
Pull up Field | 동일 기능 필드를 슈퍼클래스로 이동 |
💡 가독성 ⬆️
단순히 가독성을 높이기 위한 작업으로 이루어짐
💡 클린코드 기반 ➕ 유지보수 ⬆️
클린코드를 기반으로 한 유지보수를 위한 코드 개선이 이루어짐