✏️12.1 메서드 올리기
리팩터링 전
리팩터링 후
🧷 배경
중복된 두 메서드에 중복 코드가 있다면 메서드 올리기를 통해 리팩터링을 진행하자. 이러한 중복은 한쪽의 변경이 다른쪽에는 반영되지 않을 수 있다는 위험을 항상 수반한다.
🧷 절차
똑같이 동작하는 메서드인지 면밀히 살펴본다.
메서드 안에서 호출하는 다른 메서드와 참조하는 필드들을 슈퍼클래스에서도 호출하고 참조할 수 있는지 확인한다.
메서드 시그니처가 다르다면 함수 선언 바꾸기로 슈퍼클래스에서 사용하고 싶은 형태로 통일한다.
슈퍼클래스에 새로운 메서드를 생성하고, 대상 메서드의 코드를 복사해넣는다.
정적 검사를 수행한다.
서브클래스 중 하나의 메서드를 제거한다.
테스트한다.
모든 서브클래스의 메서드가 없어질 때까지 다른 서브클래스의 메서드를 하나씩 제거한다.
🧷 예시
🧷 리팩터링 전
🧷 리팩터링 후
Last updated