소프트웨어 공부/프로그래밍

변수는 항상 초기화하여 사용하라.

야곰야곰+책벌레 2021. 4. 20. 14:09
728x90
반응형

깔끔한 상태에서 시작하라.

초기화되지 않은 변수는 C와 C++에서 있어 버그의 온상이므로, 상상 변수 사용 전에 깨끗한 메모리 상태를 만들어야 한다. 순차적 언어인 파스칼, C, 포트란, 코볼 등을 사용할 때는 변수를 사용하는 코드와 정의하는 코드가 분리되고, 사용되기 직전에 값을 할당하지만, 이러한 방식은 절대 권장되지 않는 형태이다.

 

  초기화 되지 않은 변수에 대한 일반적인 오해 중 하나는 그로 인해 프로그램의 실행이 방해받을 것이라는 점이다. 하지만 이러한 프로그램들은 몇 년간 별다른 문제없이 실행될 수 잇다. 다만 이후에 다른 문맥에서의 호출, 재 컴파일 등 프로그램의 다른 부분에 생긴 변화로 인해 간헐적인 프로그램 중단이 발생할 수 있다.

 

  • 표준 초기값이나 ? 를 사용하는 경우..
// 권장되지 않는 방법
int speedupFactor;
if(condition)
    speedupFactor = 2;
else
    speedupFactor = -1;

// 보다 나은 방법
int speedupFactor = -1;
if(condition)
    speedupFactor = 2;

// 보다 나은 방법
int speedupFactor = condition ? 2 : -1;

가장 좋은 방법은 변수의 정의와 초기화 사이에 간격을 두지 않는 것이다.

 

  • 복잡한 계산의 흐름을 함수로 대체하는 방법
// 권장되지 않는 방법
int speedupFactor;
if(condition) {
    // ... 코드 ...
    speedupFactor = somevalue;
} else {
    // ... 코드 ...
    speedupFactor = someOthervalue;
}

// 보다 나은 방법
int speedupFactor = ComputeSpeedupFactor();

 

  • 배열의 초기화
// 사용 가능한 방법
char path[MAX_PATH]; path[0]='\0';

// 보다 나은 방법
char path[MAX_PATH] = { '\0' };

다음과 같은 배열 내의 모든 문자를 0으로 채우는 것이 보다 안전한 방법이다.

둘 중 어떤 방법이라도 괜찮지만, 일반적으로는 보다 안전한 방법을 사용하는 것이 좋다.

 

728x90
반응형