본문 바로가기

클린코드

[Refactoring] 14. 성의없는 요소

 

코딩으로 학습하는 리팩토링 - 인프런 | 강의

리팩토링은 소프트웨어 엔지니어가 갖춰야 할 기본적인 소양 중 하나입니다. 이 강의는 인텔리J와 자바를 사용하여 보다 실용적인 방법으로 다양한 코드의 냄새와 리팩토링 기술을 설명하고 직

www.inflearn.com

| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.


성의없는 요소
  • 변수, 메서드, 클래스 등을 만드는 이유
    • 추후 발생할 변화를 대비
    • 재사용을 위해서
    • 의미있는 이름을 위해서

  • 예상하고 만들어 놓은 요소들이 기대에 부응하지 못하는 경우가 있는데 그런 경우에는 해당 요소를 제거해야 한다.
  • 관련 리팩토링
    • 함수 인라인
    • 클래스 인라인
    • 계층 합치기


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