본문 바로가기
Web development/Books

Refactoring - Decompose Conditional

by 자몬다 2019. 12. 31.
Martin Fowler - Refactoring을 읽고 정리한 글입니다.(260~262p)

 

// Before
if (!aDate.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd))
	charge = quantity * plan.summerRate;
else
	charge = quantity * plan.regularRate + plan.regularServiceCharge;
   
// After
if (summer())
	charge = summerCharge();
else
	charge = regularCharge()

 

조건문 분해.

프로그램의 복잡도를 올리는 가장 흔한 요소는 조건부 로직이다.

다양한 조건의 코드를 쓰면 함수는 길어져도 빨리 끝낼 수 있다.

함수가 길어지면 읽기 힘들고, 어려워진다. 어떻게 되는지는 알 수 있어도 왜 하는지 알기 어려워짐.

조건문을 분리시키면 의도가 명확해진다.

방법은 간단하다. Extract Function을 쓰면 된다.

(리마인드 : 반복적으로 쓰이는 코드를 함수로 추출해라. 네이밍이 중요하다)

 

Mechanics

조건과 조건부의 각 leg에 Extract Function을 적용해라.

leg : if/else 내부를 말하는듯.

다끝나면 삼항연산자로 바꾸기도 함.

댓글