본문 바로가기

클린코드

[Refactoring] 5. 전역 데이터

 

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

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

www.inflearn.com

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


전역 데이터
  • 전역 데이터 -> 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