냄새 22. 데이터 클래스
- etc/리팩토링
- 2023. 5. 10.
들어가기 전
이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다.
냄새 22. 데이터 클래스 (Data Class)
- 데이터 클래스 냄새
- public 필드만 있는 클래스 (변경에 취약함)
- 필드에 대한 Getter/Setter만 있는 클래스
- 결과적으로는 데이터 클래스 냄새는 Getter / Setter만 있고 비즈니스 로직에 대한 메서드들이 없는 경우 가리킴.
- 왜 만들어질까?
- 코드가 적절한 위치에 있지 않기 때문에 이런 냄새가 생길 수 있음. 데이터 클래스의 필드를 사용하는 메서드가 다른 클래스에 존재하기 때문에 '데이터 클래스'가 만들어질 수 있음.
- 데이터 클래스 냄새 예외
- '단계 쪼개기'에서 중간 데이터를 표현하는데 사용할 레코드는 불변 객체로 데이터를 전달하는 용도로 사용할 수 있음. 이 경우는 냄새에 해당하지 않음.
- 리팩토링 방법
- public 필드를 가지고 있다면 '레코드 캡슐화하기'를 사용해 메서드를 통해서 접근하도록 고칠 수 있음.
- 변경되지 않아야 할 필드에는 '세터 제거하기'를 적용할 수 있다.
- Getter / Setter가 사용되는 메서드를 찾아보고 '함수 옮기기'를 사용해서 메서드를 데이터 클래스로 옮길 수 있음.
- 메서드 중 일부 코드만 옮겨야 한다면 '함수 추출하기'를 선행한 후에 데이터 클래스로 옮길 수 있다.
'etc > 리팩토링' 카테고리의 다른 글
냄새 23. 상속포기 (0) | 2023.05.10 |
---|---|
리팩토링 42. 레코드 캡슐화 하기 (0) | 2023.05.10 |
냄새 21. 서로 다른 인터페이스의 대안 클래스들 (0) | 2023.05.10 |
리팩토링 41. 슈퍼클래스 추출하기 (0) | 2023.05.10 |
냄새 20. 거대한 클래스 (0) | 2023.05.10 |