만약 어떠한 값을 상수 값과 비교해야 할 때 코드를 어떻게 작성해야 할까요?

일반적으로 다음과 같이 작성할 것입니다.

if ( bRet == TRUE )
{
// 코드…
}

하지만, 이 코드는 다음과 같이 작성할 수도 있습니다.

if ( TRUE == bRet )
{
// 코드…
}

이 두 코드는 당연히 실행된 결과에 있어서는 아무런 차이가 없습니다. 하지만, 후자의 경우와 같이 코드를 작성하는 데에는 프로그래머의 실수를 방지하기 위한 목적이 있습니다. 어떤 경우냐 하면 프로그램을 작성하다 보면 bRet 값이 TRUE인지를 비교해야 하는데, 실수로 다음과 같이 작성하여 항상 참으로 만들어 버릴 수 있습니다.

if ( bRet = TRUE )
{
// 코드…
}

이 코드는 프로그래머가 의도한 것으로 생각하기 때문에 컴파일 오류가 발생하지 않습니다. 물론, 똑똑한 컴파일러는 이러한 코드를 보고 경고나 오류를 표시하기도 합니다.

그런데 이 코드에서 만약 프로그래머가 습관적으로 다음과 같이 작성한다면 이 코드는 빌드가 되지 않고 컴파일시에 오류가 발생하게 됩니다.

if ( TRUE = bRet )
{
// 코드…
}

상수 값에 변수의 내용을 대입할 수 없는거죠. 따라서 이런 경우에는 명시적으로 문법 오류이기 때문에 보다 쉽게 버그를 미연에 방지할 수 있다고 볼 수 있습니다.

프로그래밍은 습관입니다. 여러분은 어떤 습관을 갖고 있나요?

출처: http://www.debuglab.com