| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.
데이터 뭉치
- 항상 뭉쳐 다니는 데이터는 한 곳으로 모아두는 것이 좋다.
- 여러 클래스에 존재하는 비슷한 필드 목록
- 여러 함수에 전달하는 매개변수 목록
- 관련 리팩토링 기술
- 클래스 추출하기 -> 여러 필드를 하나의 객체나 클래스로 모을 수 있다.
- 매개변수 객체 만들기, 객체 통째로 넘기기 -> 메서드 매개변수를 개선할 수 있다.
Before
public class Employee {
private String name;
private String personalAreaCode;
private String personalNumber;
public Employee(String name, String personalAreaCode, String personalNumber) {
this.name = name;
this.personalAreaCode = personalAreaCode;
this.personalNumber = personalNumber;
}
}
public class Office {
private String location;
private String officeAreaCode;
private String officeNumber;
public Office(String location, String officeAreaCode, String officeNumber) {
this.location = location;
this.officeAreaCode = officeAreaCode;
this.officeNumber = officeNumber;
}
}
=> AreaCode, Number 필드가 겹친다.
After
public class Employee {
private String name;
private TelephoneNumber personalPhoneNumber;
public Employee(String name, TelephoneNumber personalPhoneNumber) {
this.name = name;
this.personalPhoneNumber = personalPhoneNumber;
}
}
public class Office {
private String location;
private TelephoneNumber officePhoneNumber;
public Office(String location, TelephoneNumber officePhoneNumber) {
this.location = location;
this.officePhoneNumber = officePhoneNumber;
}
}
public class TelephoneNumber {
private String areaCode;
private String number;
public TelephoneNumber(String areaCode, String number) {
this.areaCode = areaCode;
this.number = number;
}
}
'클린코드' 카테고리의 다른 글
[Refactoring] 12. 반복되는 switch 문 (0) | 2022.09.15 |
---|---|
[Refactoring] 11. 기본형 집착 (0) | 2022.09.14 |
[Refactoring] 9. 기능 편애 (0) | 2022.09.12 |
[Refactoring] 8. 산탄총 수술 (0) | 2022.09.11 |
[Refactoring] 7. 뒤엉킨 변경 (0) | 2022.09.10 |