Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C/C++에서 전역 변수 사용을 피해야 하는 이유

전역 변수는 왜 문제가 될까?

전역 변수의 사용은 C++뿐만 아니라 모든 프로그래밍 언어에서 가급적 피해야 합니다. 그 이유는 전역 변수가 전역 네임스페이스(namespace)를 오염시키고, 프로그램의 어느 파일에서든 접근하고 수정할 수 있기 때문에 규모가 큰 프로젝트에서는 매우 성가신 버그를 유발할 수 있기 때문입니다.

전역 변수가 나쁜 이유

  • 코드의 어느 부분에서든 전역 변수를 변경할 수 있기 때문에, 가능한 모든 사용 지점을 기억하거나 추론하기가 어렵습니다.

  • 전역 변수에는 접근 제어(access control)가 존재하지 않습니다. 프로그램의 특정 부분으로 접근 범위를 제한할 방법이 없습니다.

  • 전역 변수를 사용하면 코드 간에 매우 강한 결합(tight coupling)이 발생합니다.

  • 전역 변수는 네임스페이스 오염을 일으킵니다. 이로 인해 의도치 않게 전역 값이 재할당되는 상황이 생길 수 있습니다.

  • 전역 변수를 사용하는 프로그램은 테스트하기가 매우 까다롭습니다. 테스트 시 전역 상태와 코드를 분리(decouple)하기 어렵기 때문입니다.

그래도 전역 변수를 써야 한다면?

물론 때로는 어쩔 수 없이 전역 변수를 사용해야 하는 경우도 있습니다. 하지만 그렇게 하기 전에 반드시 다른 대안이 없는지 먼저 확인하는 습관이 중요합니다. 예를 들어 함수 인자로 값을 전달하거나, 클래스 멤버 변수로 관리하거나, 싱글턴 패턴 등 더 안전한 설계 방식을 고려해 볼 수 있습니다.

전역 변수가 왜 위험한지에 대해 더 자세히 알아보려면 c2 위키의 GlobalVariablesAreBad 문서를 참고하시기 바랍니다.