condition repair
조건식은 bool 문장으로 쪼개면 실수가 빨리 보인다
관계 연산자는 true 또는 false를 만들고, 논리 연산자는 그 값을 조합합니다. 위험한 표현을 작은 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로 읽기
비교 하나가 true 또는 false를 만든 뒤 다음 연산자로 넘어갑니다.
괄호로 의도 고정
`&&`와 `||`가 섞이면 먼저 판단할 단위를 괄호로 묶습니다.
부정 범위 확인
`!(a && b)`와 `!a && b`는 다른 조건이므로 묶음부터 확인합니다.
단락 평가 활용
뒤 조건이 실행되지 않아도 안전한 순서로 보호 조건을 앞에 둡니다.