드모르간의 법칙

ljjunh·2024년 11월 17일

clean-code-javascript

목록 보기
20/38
post-thumbnail

개발을 하다 보면 조건문을 자주 마주치게 된다. 특히 부정 조건문을 다룰 때, 코드가 복잡해지고 가독성이 떨어지는 경우가 많다. 이 때 드모르간의 법칙을 활용하면 더 깔끔한 코드를 작성할 수 있다.

1 📚 드모르간의 법칙이란?

드로므간의 법칙은 논리 연산에서의 부정에 관한 법칙이다. 복잡한 부정 연산을 더 단순하게 표현할 수 있게 해주는데, 다음 두 가지가 핵심이다

1.1 OR 연산의 부정

// not (A or B) === (not A) and (not B)
!(A || B) === !A && !B

1.2 AND 연산의 부정

// not (A and B) === (not A) or (not B)
!(A && B) === !A || !B

2.💡 실제 활용 예제

2.1 로그인 검증 예제

const isValidUser = true;
const isValidToken = true;

// 👍 긍정 조건
if (isValidUser && isValidToken) {
    console.log('✅ 로그인 성공');
}

// 👎 부정 조건 (두 가지 방법)
// 방법 1: 전체 조건 부정
if (!(isValidUser && isValidToken)) {
    console.log('❌ 로그인 실패');
}

// 방법 2: 드모르간 법칙 적용 (더 명확함)
if (!isValidUser || !isValidToken) {
	console.log('❌ 로그인 실패');
}

2.2 성별 인증 예제

const isMale = true;
const isFemale = false;

// 👍 긍정 조건
if (isMale || isFemale) {
    console.log('✅ 성별 인증 완료');
}

// 👎 부정 조건 (두 가지 방법)
// 방법 1: 전체 조건 부정
if (!(isMale || isFemale)) {
    console.log('❌ 성별 인증 실패');
}

// 방법 2: 드모르간 법칙 적용 (더 명확함)
if (!isMale && !isFemale) {
    console.log('❌ 성별 인증 실패');
}

2.3 복잡한 조건문 리팩토링

// 리팩토링 전
if (!(isAdmin && hasPermission && isEmailVerified)) { ... }

// 리팩토링 후
if (!isAdmin || !hasPermission || !isEmailVerified) { ... }

💡 TIP: 조건문이 복잡해질 때마다 "이걸 드모르간의 법칙으로 단순화할 수 있을까?" 라고 생각해보자. 더 깔끔한 해결책을 발견할 수 있을 것이다.

profile
Hello

0개의 댓글