본문 바로가기
기타 지식들

전역 변수의 일장일단

by 클레어몬트 2024. 7. 19.

(장점)

 

  • 간편함:
    • 작은 프로그램이나 간단한 스크립트에서는 전역 변수를 사용하여 데이터를 공유하는 것이 더 간편할 수 있다. 함수 간에 많은 데이터를 전달하는 복잡함을 피한다.
  • 데이터 공유:
    • 여러 함수가 같은 데이터를 사용해야 할 때 전역 변수를 사용하면 데이터 전달과 관련된 코드를 줄일 수 있다. 모든 함수가 전역 변수에 접근할 수 있기 때문에 코드가 간결해질 수 있다.
  • 메모리 효율성:
    • 전역 변수는 프로그램이 실행되는 동안 한 번만 할당되므로 메모리 사용이 효율적일 수 있다. 반복적으로 할당하고 해제하는 비용을 줄인다.
  • 상수 데이터:
    • 변하지 않는 상수 데이터(예: 설정 값, 하드코딩된 테이블 등)를 저장하는 데 전역 변수를 사용하면 편리하다. 이러한 데이터는 프로그램 전체에서 사용되기 때문에 전역 변수로 정의하는 것이 합리적이다.
  • 프로그램 상태 유지:
    • 프로그램의 상태를 전역 변수로 유지할 수 있다. 예를 들어, 게임의 점수, 애플리케이션의 설정 상태 등을 전역 변수로 관리하면 프로그램의 상태를 쉽게 추적하고 관리할 수가 있다.

 

      1.  

(단점)

 

  • 데이터의 불투명성:
    • 전역 변수는 프로그램의 어느 곳에서나 접근할 수 있기 때문에 데이터가 언제, 어디서, 어떻게 변경되는지 추적하기 어렵다.
    • 이러한 불투명성은 버그를 찾고 수정하는 데 큰 어려움을 초래할 수 있다.
  • 모듈성 감소:
    • 전역 변수를 사용하면 함수나 모듈 간의 의존성이 증가하여 코드의 모듈성이 감소한다.
    • 모듈 간의 독립성이 떨어지므로, 한 모듈의 변경이 다른 모듈에 예상치 못한 영향을 미칠 수 있다.
  • 테스트(디버깅) 어려움:
    • 전역 변수를 사용하면 개별 함수나 모듈을 독립적으로 테스트하기 어려워진다.
    • 전역 변수의 상태를 유지하고 초기화하는 데에 많은 노력이 필요할 수가 있다.
  • 병렬 프로그래밍 문제:
    • 전역 변수는 여러 스레드에서 동시에 접근할 수 있기 때문에 동기화 문제를 일으킬 수 있다.
    • 이러한 문제는 프로그램의 성능 저하뿐만 아니라 예상치 못한 동작을 초래할 수가 있다.
  • 메모리 관리 문제:
    • 전역 변수는 프로그램이 종료될 때까지 메모리를 차지한다. 따라서 메모리 사용이 비효율적일 수 있다.
    • 특히 많은 양의 데이터를 전역 변수로 사용할 경우, 메모리 누수 및 관리 문제가 발생할 수 있다.
  • 유지보수 어려움:
    • 코드가 복잡해질수록 전역 변수를 사용하는 프로그램의 유지보수가 어려워진다.
    • 전역 변수를 사용하는 코드에서 변경을 가하면 예상치 못한 부작용이 발생할 가능성이 크다.