[Refactoring] Lazy Element

서준교·2023년 12월 23일
0

Refactoring

목록 보기
4/8
post-thumbnail

👉 이 게시글은 inflearn의 코딩으로 학습하는 리팩토링 강의 내용을 바탕으로 작성되었습니다.

프로그래밍을 하다 보면 변수, 필드를 만들거나 클래스를 정의하는 작업을 수도 없이 하게 되는데, 이 과정에서 코드 내에 구현된 많은 요소들이 실제로는 제 역할을 제대로 하고 않아 기대에 부응하지 못하는 경우가 존재할 수 있습니다. 이러한 경우 해당 요소를 제거하는 리팩토링을 진행하는 것이 양질의 코드를 만드는 데에 도움이 됩니다.

이 글에서는 불필요한 상속 구조를 처리하는 "계층 합치기" 라는 리팩토링 기법에 대해 알아봅시다.

계층 합치기 (Collapse Hierarchy)

상속 구조를 리팩토링하는 과정에서 기능을 상위 클래스나 하위 클래스로 옮기다 보면 하위 클래스와 상위 클래스 코드에 차이가 없는 경우가 발생할 수 있는데, 이러한 경우에는 필요없는 클래스를 삭제해야 합니다.

Intellij에서는 하위 클래스의 멤버변수는 Pull Members Up, 상위 클래스에서는 Push Members Down을 통해 클래스간의 이동을 지원합니다. (별도의 단축키는 제공되지 않고 있습니다.)

public class CourtReservation extends Reservation {

    private String courtNumber;

}
public class Reservation {

    private LocalDateTime startDateTime;

    private LocalDateTime endDateTime;

    private List<String> members;

    private String owner;

    private boolean paid;

}

하위 클래스인 CourtReservation 클래스의 인스턴스 변수인 courtNumber를 상위 클래스인 Reservation으로 옮기려고 한다면, Intellij에서 위에서 언급한 기능을 사용하면 쉽게 변경이 가능합니다.

profile
매일 성장하는 개발자가 되고 싶습니다. 😊

0개의 댓글