리팩토링 : 냄새 5 - 전역 데이터

    들어가기 전

    이 글은 인프런 백기선님의 리팩토링 강의를 복습하며 작성한 글입니다. 


    냄새 5. 전역 데이터 (Global Data)

    • 전역 데이터를 사용하는 냄새는 제거가 필요하다. 
    • 전역 데이터
      • 전역에서 사용될 수 있는 변수. 예를 들면 public static 변수
      • 전역 데이터는 아무 곳에서나 변경될 수 있다는 문제가 있음.
      • 변수에 직접 접근 가능하기 때문에 어떤 코드로 인해 값이 바뀐 것인지 파악하기 어려움.
      • 변수에 직접 접근 가능한 클래스 변수(필드)도 비슷한 문제를 겪을 수 있음.
    • 해결 방법
      • "변수 캡슐화 하기"를 적용해서 접근을 제어하거나 어디서 사용하는지 파악하기 쉽게 만들 수 있다.
    • 파라켈수스의 격언, "약과 독의 차이를 결정하는 것은 사용량 뿐이다."

    전역 데이터를 사용하는 것은 가급적이면 자제하는 것이 좋다. 왜냐하면 공개 범위가 넓어진다는 것은 변수를 수정했을 때 영향을 미치는 범위가 넓어진다는 것을 의미하기 때문이다. 


    전역 데이터란?

    전역 데이터는 어플리케이션 전체에서 접근 및 변경 가능한 데이터를 의미한다. 전역 데이터는 공개된 범위가 넓기 때문에 일반적으로 전역 변수는 상수로 선언해서 사용해야한다. 왜냐하면 값이 참조되기만 하기 때문에 값의 변경에 의한 문제가 발생할 여지가 줄어들기 때문이다.


    전역 데이터의 문제점

    전역 데이터의 가장 큰 문제점은 아무 곳에서나 변경될 수 있다는 점이다. 어디서든지 변수에 접근/수정 가능하기 때문에 문제가 발생했을 때 어떤 코드에서 데이터가 수정되어 문제가 발생했는지를 추적하기가 어려워진다. 

    또한 변수의 이름이라도 바뀌게 되면 변수에 직접 접근하는 모든 코드의 수정이 필요해진다. 이 때 전역 변수이기 때문에 틀림없이 넓은 범위에서 사용하고 있을 것이고, 변경되는 부분이 많아지기 때문에 유지보수도 어려워진다. 


    전역 데이터 문제점 해결 방법

    • 반드시 사용해야 하는 전역 데이터라면 상수 (public static final)을 이용해서 처리한다. 
    • 그런 경우가 아니라면, '변수 캡슐화하기'를 이용해서 냄새를 제거할 수 있다.

    파라켈수스의 격언, "약과 독의 차이를 결정하는 것은 사용량 뿐이다."

    일반적으로 전역 변수를 사용하면 유용한 경우도 존재한다. 하지만 위의 격언에서 이야기 하듯이 '전역변수'의 사용이 많아지면 많아질수록 좋지 않은 어플리케이션이 될 수 있다. 따라서 가급적이면 전역 변수 사용을 피하고, '변수 캡슐화'를 통해서 처리하는 것을 추천한다. 

    'etc > 리팩토링' 카테고리의 다른 글

    냄새 3. 긴 함수  (0) 2023.04.29
    리팩토링 17. 변수 캡슐화하기  (0) 2023.04.27
    리팩토링6. 메서드 올리기  (0) 2023.04.27
    리팩토링 5. 코드 정리하기  (0) 2023.04.27
    리팩토링 4. 함수 추출하기  (0) 2023.04.27

    댓글

    Designed by JB FACTORY