규도자 개발 블로그

좋은 변수이름 정하기 : 임시 변수 이름 본문

소프트웨어 공학/Clean Code

좋은 변수이름 정하기 : 임시 변수 이름

규도자 (gyudoza) 2018. 10. 11. 00:53

전의 게시물에서도 밝혔다시피 이 게시물은 스티브 맥코넬이 쓴 CODE COMPLETE2에 나온 내용이며 다른 사람들에게도 변수 이름의 중요성과 그 이름을 정하는 데 도움을 주기 위해, 그리고 나 자신도 필요할 때마다 참고하기 위해 쓴다는 것을 알린다.

임시 변수 이름

임시 변수는 계산의 중간 결과를 보관하기 위한 임시 저장소로 사용되고 보조 수단으로 사용하는 값을 보관하는 데 사용된다. 대개는 temp나 x, 그 밖의 모호하고 이해하기 어려운 이름을 갖는다. 일반적으로 임시 변수는 개발자가 문제를 완벽하게 이해하지 못하고 있다는 신호다. 게다가 변수가 공식적으로 "임시"상태이기 때문에 개발자는 임시 변수를 다른 변수보다 별생각 없이 다루게 되어 오류가 발생할 가능성이 커진다.

임시 변수를 조심하라. 변수의 값을 일시적으로 보관할 필요가 종종 있다. 하지만 그렇게 생각하면 프로그램에 있는 거의 모든 변수가 임시 변수다. 그중에서 몇 개를 임시 변수라고 하는 것은 그 변수의 실질적인 목적에 대한 확신이 없다는 것을 가리킨다. 다음 예제를 살펴본다.

정보가 없는 "임시"변수의 이름에 대한 C++ 예제

// 2차 방정식의 근을 구한다.
// 이 코드는 (b^2-4*a*c)가 양수라고 가정한다.
temp = sqrt(b^2 - 4*a*c);
root[0] = (-b + temp) / (2 * a);
root[1] = (-b - temp) / (2 * a);

sqrt(b^2 - 4*a*c)표현식의 값은 특히 나중에 두 곳에서 사용되므로 변수에 저장하는 것이 좋다. 하지만 temp라는 이름은 변수가 무엇을 하는지에 관한 아무런 정보도 제공하지 않는다. 이보다 나은 접근 방법은 다음 예제와 같다.

"임시"변수의 이름을 실질적인 변수로 대체한 C++ 예제

// 2차 방정식의 근을 구한다.
// 이 코드는 (b^2-4*a*c)가 양수라고 가정한다.
discriminant = sqrt(b^2 - 4*a*c);
root[0] = (-b + discriminant) / (2 * a);
root[1] = (-b - discriminant) / (2 * a);

이 코드는 본질적으로 같은 코드지만 정확하고 설명적인 변수 이름을 사용해 첫 번째 예제를 개선했다.

Comments