TIL/2025

Guard Clause를 통해 바라본 Clean Code와 MISRA Rule의 차이

고무 오리 2025. 8. 15. 00:48
728x90
웹 개발을 할 때 Guard Clause는 가독성 향상, 코드 간결성 증가를 위한 기본 규칙이었다.
그런데 Misra Cpp 규칙에서는 1entry-1exit 규칙이 있어 Guard Clause 사용 자체가 불가능 했다. 

 

 

상충되는 철학을 가진 두 규칙

Guard Clause

가독성유지보수성에 중점

  • Clean Code 철학
  • 조건이 맞지 않으면 함수 초반에 바로 반환해 코드 중첩을 줄이자

 

int process(int value) {
    if (value < 0) return -1;
    if (value == 0) return 0;
    return value * 2;
}​

 

 

1Entry-1Exit

안전성제어 흐름 예측 가능성에 초점

  • MISRA C++ 규칙
  • 함수에는 진입점과 종료점이 각각 하나만 존재
int process(int value) {
    int result = 0;
    if (value < 0) {
        result = -1;
    } else if (value == 0) {
        result = 0;
    } else {
        result = value * 2;
    }
    return result;
}

 

 

 

도메인 별 코딩 규칙 철학이 다르다

일반 소프트웨어와 안전 및 임베디드 시스템 코딩 규칙 철학이 다르다는 것을 알게 됨

항목 Clean Code MISRA C++
핵심 목표 가독성, 유지보수성 안전성, 분석 용이성
return 개수 여러 번 허용 한 번만 허용
적용 환경 일반 소프트웨어 안전·임베디드 시스템

 

 

Guard Clause와 1 Entry / 1 Exit 규칙은 상충되는 듯 보이지만,

"무엇이 더 좋은가"의 문제가 아니라 "어떤 환경에서 더 적합한가"의 문제다

 

728x90