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
'TIL > 2025' 카테고리의 다른 글
| [cpp] Lambda Functions (0) | 2025.08.25 |
|---|---|
| for 조건문 내 후위 연산자의 위험성 (1) | 2025.08.15 |
| Data Structure & Algorithm (0) | 2025.07.25 |
| Learn the architecture - Generic Interrupt Controller v3 and v4, Overview (0) | 2025.06.12 |
| mac에서 eframe 무작정 사용해보기 (feat. egui, rust) (0) | 2025.05.04 |