반응형
여러 프로그래밍적인 요소를 만드는 이유.
1. 나중에 발생할 변화를 대비해서 생성한다.
2. 해당 함수 또는 클래스를 재사용하려고 한다.
3. 의미 있는 이름을 가진 변수를 사용하려고 한다.
가끔 그렇게 예상하고 만들어 놓은 요소들이 기대에 부응하지 못하는 경우 해당 요소를 제거해야 한다.
보통 함수를 인라인 화하여 처리하거나, 불필요한 클래스를 인라인 시킨다.
불필요한 상속 구조는 계층을 합치는 (Collapse Hierarchy)를 사용할 수 있다.
Collapse Hierarchy
보통 상속 구조를 리팩토링하려고 메서드를 상위 클래스로 올리거나 내리다 보면 하위클래스와 상위 클래스 코드에 차이가 없는 경우가 발생할 수 있다.
그러한 경우 그 둘을 합칠 수있는데, 어떤 것을 없애야 할까? 보통 둘 중 이름이 적절한 쪽을 선택하지만 애매하다면 어느 쪽을 선택해도 문제는 없다.
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;
}
인텔리제이에서는 Push Members Down이라는 기능을 제공해준다.

이는 상위 클래스를 하위 클래스로 필드를 옮겨 줄 수 있다.
역의 기능도 존재한다.

차이가 없는 상위, 하위 클래스들이 보인다면 계층 합치기 리팩터링을 적용하자!
반응형
'독서에서 한걸음' 카테고리의 다른 글
| Temporary Field (0) | 2022.12.24 |
|---|---|
| Speculative Generality (0) | 2022.12.24 |
| Repeated Switches (0) | 2022.12.22 |
| Replace Conditional with Polymorphism (0) | 2022.12.21 |
| 타입 코드를 서브클래스로 변경하기 (0) | 2022.12.19 |
댓글