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. 조건부 로직을 다형성으로 바꾸기
다형성은 객체 지향 프로그래밍의 핵심이다. 조건문이 복잡할 경우에 객체를 만들어서 다형성을 이용하는 방법도 있다.
'Today I Learned' 카테고리의 다른 글
리팩터링 2판 챕터11 - API 리팩터링(1) (0) | 2021.12.20 |
---|---|
리팩터링 2판 챕터10 - 조건부 로직 간소화(2) (0) | 2021.12.20 |
리팩터링 2판 챕터9 - 데이터 조직화 (0) | 2021.12.12 |
리팩터링 2판 챕터8 - 기능 이동 (0) | 2021.11.29 |
리팩터링 2판 챕터7 - 캡슐화 (0) | 2021.11.24 |