| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.
성의없는 요소
- 변수, 메서드, 클래스 등을 만드는 이유
- 추후 발생할 변화를 대비
- 재사용을 위해서
- 의미있는 이름을 위해서
- 예상하고 만들어 놓은 요소들이 기대에 부응하지 못하는 경우가 있는데 그런 경우에는 해당 요소를 제거해야 한다.
- 관련 리팩토링
- 함수 인라인
- 클래스 인라인
- 계층 합치기
Refactoring 1. 계층 합치기
- 상속 구조를 리팩토링하는 중에 기능을 올리고 내리다 보면 하위 클래스와 상위 클래스 간의 차이가 없는 경우 합칠 수 있다.
- 하위 클래스와 상위 클래스 어느 쪽을 선택해서 기준을 잡아도 상관없다.
Before
public class Reservation {
private LocalDateTime startDateTime;
private LocalDateTime endDateTime;
private List<String> members;
private String owner;
private boolean paid;
}
public class CourtReservation extends Reservation {
private String courtNumber;
}
* IntelliJ 기능
Refactor -> Push Members Down 버튼을 클릭해 하위 클래스로 필드를 이동시킬 수 있다.
Refactor -> Pull Members Up 버튼을 클릭해 상위 클래스로 필드를 이동시킬 수 있다.
After
public class Reservation {
private LocalDateTime startDateTime;
private LocalDateTime endDateTime;
private List<String> members;
private String owner;
private boolean paid;
private String courtNumber;
}
'클린코드' 카테고리의 다른 글
[Refactoring] 16. 임시 필드 (1) | 2022.09.20 |
---|---|
[Refactoring] 15. 추측성 일반화 (0) | 2022.09.18 |
[Refactoring] 13. 반복문 (0) | 2022.09.16 |
[Refactoring] 12. 반복되는 switch 문 (0) | 2022.09.15 |
[Refactoring] 11. 기본형 집착 (0) | 2022.09.14 |