
개발을 하다 보면 조건문을 자주 마주치게 된다. 특히 부정 조건문을 다룰 때, 코드가 복잡해지고 가독성이 떨어지는 경우가 많다. 이 때 드모르간의 법칙을 활용하면 더 깔끔한 코드를 작성할 수 있다.
드로므간의 법칙은 논리 연산에서의 부정에 관한 법칙이다. 복잡한 부정 연산을 더 단순하게 표현할 수 있게 해주는데, 다음 두 가지가 핵심이다
// not (A or B) === (not A) and (not B)
!(A || B) === !A && !B
// not (A and B) === (not A) or (not B)
!(A && B) === !A || !B
const isValidUser = true;
const isValidToken = true;
// 👍 긍정 조건
if (isValidUser && isValidToken) {
console.log('✅ 로그인 성공');
}
// 👎 부정 조건 (두 가지 방법)
// 방법 1: 전체 조건 부정
if (!(isValidUser && isValidToken)) {
console.log('❌ 로그인 실패');
}
// 방법 2: 드모르간 법칙 적용 (더 명확함)
if (!isValidUser || !isValidToken) {
console.log('❌ 로그인 실패');
}
const isMale = true;
const isFemale = false;
// 👍 긍정 조건
if (isMale || isFemale) {
console.log('✅ 성별 인증 완료');
}
// 👎 부정 조건 (두 가지 방법)
// 방법 1: 전체 조건 부정
if (!(isMale || isFemale)) {
console.log('❌ 성별 인증 실패');
}
// 방법 2: 드모르간 법칙 적용 (더 명확함)
if (!isMale && !isFemale) {
console.log('❌ 성별 인증 실패');
}
// 리팩토링 전
if (!(isAdmin && hasPermission && isEmailVerified)) { ... }
// 리팩토링 후
if (!isAdmin || !hasPermission || !isEmailVerified) { ... }
💡 TIP: 조건문이 복잡해질 때마다 "이걸 드모르간의 법칙으로 단순화할 수 있을까?" 라고 생각해보자. 더 깔끔한 해결책을 발견할 수 있을 것이다.