본문 바로가기

Development/Programming

[Refactoring] 여러 겹의 조건문을 감시절로 전환

조건식은 주로 두 가지 형태를 띤다. 첫째는 어느 한 경로가 정상인지를 검사하는 형태 둘째는 조건식 판별의 한 결과만 정상작동 나머지는 비정상작동이 되는 형태이다. 


정상동작이 일부라고 한다면 if절과 else절로 구성된 조건문을 사용하고 조건이 특이한 조건이라면 그 조건을 검사해서 조건이 true 일때 반환하자 이런 식의 검사를 감시절 guard clause 이라고 한다.


if (i_isDead) {

result = deadAmount();


} else {


if (_isSeparated) {

result = separatedAmount();

} else {

if (isRetired) {

result = retiredAmount();

} else {

result = normalPayAmount();

}

}

}


위와 같이 if문과 else문으로 된 코드를 조건이 맞을 경우 바로 반환하는 감시절로 전환을 해보자


if (_isDead) return deadAmount();

if (_isSeparated) return separatedAmount();

if (isRetired) return retiredAmount();


return normalPayAmount();


위의 코드보다 깔끔하고 보기 좋은것 같다.