
부정 조건문은 ! 연산자를 사용하여 조건을 부정하는 형태의 조건문이다.
개발자의 사고 과정에 추가적인 단계가 필요하다
// 생각해야 하는 부정 조건문
if (!isNotLoggedIn){
// 1. "로그인하지 않음"의 반대
// 2. 즉, "로그인 됨"...?
}
// 명확한 긍정 조건문
if (isLoggedIn){
// 바로 이해: "로그인 됨"
}
// 😕 부자연스러운 흐름
if (!isValid) {
// 실패 케이스가 먼저...
} else {
// 성공 케이스는 나중에...
}
// 👍 자연스러운 흐름
if (isValid) {
// 성공 케이스
} else {
// 실패 케이스
}
// 😫 헷갈리는 부정적 변수명
const isNotEnabled = false;
const isNotVisible = true;
if (!isNotEnabled && !isNotVisible){ // 머리가 아파요..
// ???
}
// 🎯 명확한 긍정적 변수명
const isEnabled = true;
const isVisible = false;
if (isEnabled && !isVisible) { // 훨씬 이해하기 쉬움
// ...
}
function processUser(user) {
// 👍 유효성 검사에서의 부정 조건문
if (!user) {
throw new Error('사용자 정보가 없습니다');
}
// 메인 로직
processUserData(user);
}
function validateForm(formData) {
// 👍 검증 로직에서의 부정 조건문
if (!formData.email) {
return '이메일은 필수입니다';
}
if (!formData.password) {
return '비밀번호는 필수입니다';
}
}
function checkAccess(user) {
// 👍 보안 검사에서의 부정 조건문
if (!user.hasPermission) {
throw new Error('접근 권한이 없습니다');
}
// 권한이 있는 경우의 로직
grantAccess();
}
✅ 부정 조건문이 불가피한 경우
❌ 피해야 할 경우
🌟 Best Practices