| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.
전역 데이터
- 전역 데이터 -> ex) public static...
- 전역 데이터는 아무 곳에서 변경될 위험이 있다.
- 어떤 코드로 인해 변경되었는지 파악하기 힘들다.
- 변수 캡슐화하기를 적용해서 접근을 제어하거나 어디서 사용하는지 쉽게 파악할 수 있다.
Refactoring 1. 변수 캡슐화하기
- Encapsulation
- 메서드는 점진적으로 새로운 메서드로 변경시킬 수 있으나, 변수는 한 번에 모두 변경해야 한다.
- 데이터 구조 변경보다 조금 더 수월한 메서드 구조 변경 작업으로 대체할 수 있다.
- 데이터가 사용되는 범위가 클 수록 캡슐화의 중요도가 증가한다.
- 메서드를 사용해서 값을 변경하면 쉽게 검증 로직을 추가하거나 변경에 따른 후속 작업을 추가하는 것이 편리하다.
- 불변 데이터의 경우 해당 리팩토링을 할 필요가 없다.
Before
public class Thermostats {
public static Integer targetTemperature = 70;
public static Boolean heating = true;
public static Boolean cooling = false;
public static Boolean readInFahrenheit = true;
}
After
public class Thermostats {
private static Integer targetTemperature = 70;
private static Boolean heating = true;
private static Boolean cooling = false;
private static Boolean readInFahrenheit = true;
public static Integer getTargetTemperature() {
return targetTemperature;
}
public static void setTargetTemperature(Integer targetTemperature) {
Thermostats.targetTemperature = targetTemperature;
}
public static Boolean getHeating() {
return heating;
}
public static void setHeating(Boolean heating) {
Thermostats.heating = heating;
}
public static Boolean getCooling() {
return cooling;
}
public static void setCooling(Boolean cooling) {
Thermostats.cooling = cooling;
}
public static Boolean getReadInFahrenheit() {
return readInFahrenheit;
}
public static void setReadInFahrenheit(Boolean readInFahrenheit) {
Thermostats.readInFahrenheit = readInFahrenheit;
}
}
'클린코드' 카테고리의 다른 글
[Refactoring] 7. 뒤엉킨 변경 (0) | 2022.09.10 |
---|---|
[Refactoring] 6. 가변 데이터 (0) | 2022.09.09 |
[Refactoring] 4. 긴 매개변수 목록 (0) | 2022.09.07 |
[Refactoring] 3. 긴 함수 (0) | 2022.09.06 |
[Refactoring] 2. 중복 코드 (0) | 2022.09.05 |