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 내부를 말하는듯.
다끝나면 삼항연산자로 바꾸기도 함.
'Web development > Books' 카테고리의 다른 글
Refactoring - Replace Function with Command (0) | 2020.01.02 |
---|---|
Refactoring - Introduce Assertion (0) | 2019.12.31 |
Refactoring - Split Variable (0) | 2019.12.31 |
Refactoring - Move Statesments into Function (0) | 2019.12.31 |
Refactoring - Inline Class (0) | 2019.12.31 |
댓글