코딩 가이드라인이 필요한 이유
C++ 표준에는 정의된 구현(implementation defined), 정의하지 않은 행동(undefined behavior), 명시하지 않은 행동(unspecified behavior)과 같이 완전히 정의되지 않은 항목들이 있습니다. 이러한 특성으로 인해 호환성 문제나 실행 시간 오류가 발생할 수 있으며, 개발자가 실수하거나 표준을 잘못 이해하면 프로그램이 의도하지 않은 방식으로 동작할 가능성이 높습니다. 이를 방지하기 위해 코딩 가이드라인이 필요합니다. 다음은 그 예시입니다.
1. 잘못된 할당 가능성
다음 코드는 문법적으로는 맞지만, 개발자의 실수일 가능성이 높은 코드입니다. 두 번째 if 문에서 a에 b를 할당하고 있어, 이는 실수 또는 오해로 발생했을 확률이 높습니다. 이런 실수를 방지하려면 코딩 가이드라인이 필요합니다.
<사진 1> 잘못된 코드 예시
2. 구현에 따른 차이
다음 예시는 C++ 표준이 타입 크기를 컴파일러 구현에 맡기고 있어, 동일한 코드라도 다른 아키텍처에서 서로 다른 값이 나올 수 있다는 것을 보여줍니다. 이러한 상황에서는 개발자가 컴파일러의 동작을 문서화된 내용을 충분히 이해하고 코드를 작성해야 합니다.
<사진 2> 구현에 따른 차이 예시
3. 정의되지 않은 행동
C++에서는 0으로 나누는 코드를 작성해도 컴파일 시 오류가 발생하지 않으며 프로그램이 정상적으로 실행될 수 있습니다. 그러나 실행 시점에 어떤 동작이 발생할지는 예측할 수 없습니다. 이와 같은 상황을 실행 시간 오류(runtime error)라고 하며, 이는 전체 시스템에 치명적인 영향을 미칠 수 있습니다.
<사진 3> 정의되지 않은 행동 예시
4. 명시되지 않은 행동
다음 예시는 C++ 표준에서 함수 호출 순서를 명시하지 않는 경우입니다. 동일한 코드라도 컴파일러마다 다른 순서로 함수가 실행될 수 있으며, 이 순서는 문서로 명시되지 않기 때문에 개발자는 실제 실행하기 전까지 프로그램의 동작을 예측할 수 없습니다.
...
(후략)
* 위의 글은 슈어소프트테크에서 제공되었습니다.