위험한 조건식은 작은 bool 표현으로 고친다

조건식이 길어질수록 비교 하나가 어떤 bool을 만드는지 분리해 읽어야 대입 실수, 범위 실수, 단락 평가 순서 실수를 줄일 수 있습니다.

자주 나오는 실수와 안전한 표현

실수 유형
위험한 표현
안전한 표현
대입과 비교 혼동
if (score = 60)
if (score == 60)처럼 비교 의도를 명시합니다.
연쇄 비교
0 < x < 10
(0 < x) && (x < 10)으로 비교를 둘로 나눕니다.
실수 직접 비교
a == b
std::abs(a - b) < EPS로 오차 범위를 둡니다.
보호 조건 순서
ptr->ready && ptr != nullptr
ptr != nullptr && ptr->ready처럼 먼저 보호합니다.

비교와 대입 구분

==는 질문이고, =는 값을 넣는 동작입니다.

범위는 두 비교로

수학식처럼 이어 쓰지 말고 두 bool을 &&로 묶습니다.

부정 범위 확인

!(a && b)!a && b는 다른 조건입니다.

생략되어도 안전한가

단락 평가로 오른쪽 표현식이 실행되지 않을 수 있음을 기준으로 순서를 잡습니다.