리팩터링/냄새 (리팩터링할 시점)

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

developer-tj 2023. 3. 4. 12:00
반응형

전역 데이터는 프로그램 전체에서 공유되는 데이터를 의미합니다.

전역 변수, 전역 상수, 싱글턴 인스턴스, 레지스트리 항목 등이 포함될 수 있습니다.

 

전역 데이터는 여러 모듈에서 자유롭게 접근할 수 있기 때문에 모듈 간 결합도가 높아지고, 코드의 복잡도가 증가하며, 디버깅이 어려워질 수 있습니다.

- 전역 데이터는 아무곳에서나 변경될 수 있다.

- 전역 데이터로 문제가 발생 시 어떤 코드로 인해 값이 바뀐 것인지 알기 어렵다.

- 클래스 맴버 변수도 비슷한 문제가 발생 할 수 있다.

 

또한 전역 데이터가 변경될 경우 해당 데이터를 사용하는 모든 코드를 수정해야 하므로 유지보수성도 저하될 수 있습니다.

 

전역 데이터를 사용하지 않고 지역 변수나 매개변수로 데이터를 전달하거나 객체지향 설계 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)을 적용하여 인터페이스를 통해 데이터를 전달하는 방법 등을 고려할 수 있습니다.

 

전역 데이터를 사용해야 하는 경우도 있지만, 가능한 사용을 최소화하고 적절히 제한하는 것이 좋습니다.

 

사용할 수 있는 리팩터링

- 변수 캡슐화하기 (Encapsulate Variable)