본문 바로가기

Today I Learned

리팩터링 2판 챕터10 - 조건부 로직 간소화(1)

1. 조건문 분해하기

조건문이 길면 의도를 제대로 파악하기가 힘들다. 함수 호출로 바꿔주자.

 

2. 조건식 통합하기

조건식을 통합하고 함수 추출하기까지 진행하면 코드가 말하는 (의도) 분명해진다.

 

3. 중첩 조건문을 보호 구문으로 바꾸기

*보호구문이란?  비정상 조건을 if에서 검사한 다음, 함수에서 바로 빠져 나온다.

정상 조건을 여러 중첩으로 검사하는 것이 아니라 비정상 조건을 하나씩 검사하는 검사 구문.

 

  • 보호구문 사용 전
/*
	2021년 유방암 건강검진 대상자를 구하는 코드를 만들어보자.
	홀수 년도 생이고 만 40세 이상 여성이라면 대상자이다.
*/
function is2021HealthCheckupSubject(person){
	if(person.isMale){
		return false;
	}else{
		if(person.year < 40){
			return false;
		}else{
			if(person.year % 2 === 0){
				return false;
			}else{
				return true;
			}
		}
	}
}

 

  • 보호구문 사용 후
function is2021HealthCheckupSubject(person){
	if(person.isMale){
		return false;
	}
	if(person.year < 40){
		return false;
	}
	if(person.year % 2 === 0){
		return false;
	}
	return true;
}

 

4. 조건부 로직을 다형성으로 바꾸기

다형성은 객체 지향 프로그래밍의 핵심이다. 조건문이 복잡할 경우에 객체를 만들어서 다형성을 이용하는 방법도 있다.