상세 컨텐츠

본문 제목

if문 중첩에 따른 Nesting 문제 Refactoring하기

Programming/Computer Science

by PrJun 2023. 7. 10. 21:11

본문

if문이 많이 중첩 되면 점점 코드 안쪽으로 들여쓰기가 되며 가독성 및 유지보수에 문제가 발생한다.

이를 "Nesting" 이라고 부르는데 해당 문제를 해결하는 방안에는 크게 3가지가 있다.

 

1. and / or 연산자 사용하기

2. guard clause / invert 적용

예외처리 항목을 위로 올리는 방법

// guard clause 적용 전
if (아이디중복아님) {
    if (아이디길이적절) {
        if (비번길이적절) {
            가입()
        } else {
            거절('비번짧음')
        }
    } else {
        거절('아이디짧음')
    }
} else {
    거절('아이디중복')
}

// guard clause 적용 후 (중괄호 생략도 가능할 것)
if (아이디중복) {
    거절('아이디중복')
}
if (아이디길이짧음) {
    거절('아이디짧음')
}
if (아이디중복) {
    거절('아이디중복')
}

그러나 else 없이 if만 사용하게 되면 성능 문제로 이어질 수 있음.

function signup() {
    if (아이디중복) return 거절('아이디중복')
    if (아이디길이짧음) return 거절('아이디짧음')
    if (비번길이짧음) return 거절('비번짧음')
    return 가입()
}

signup()

함수를 하나 만들어 놓고 return 시키게 되면 모든 조건문을 검사하지 않고

도중에 작업을 중단하기 때문에 성능 문제를 해결할 수 있다.

댓글 영역