✏️10.6 어서션 추가하기 (Introduce Assertion)
리팩터링 전
if (this.discountRate)
base = base - (this.discountRate * base);
리팩터링 후
assert(this.discountRate >= 0);
if (this.discountRate)
base = base - (this.discountRate * base);
🧷 배경
어서션은 항상 참이라고 가정하는 조건부 문장으로, 어서션이 실패했다는 건 프로그래머가 잘못했다는 뜻이다.
어서션은 프로그램이 어떤 상태임을 가정한 채 실행되는지를 다른 개발자에게 알려주는 훌륭한 소통도구이며 디버깅하기 편리한 수단이다.
🧷 절차
1. 참이라고 가정하는 조건이 보이면 그 조건을 명시하는 어서션을 추가한다.
🧷 예시
🧷 리팩터링 전
class Customer {
applyDiscount(aNumber) {
return (this.discountRate)
? aNumber - (this.discountRate * aNumber)
: aNumber;
}
}
🧷 리팩터링 후
class Customer {
applyDiscount(aNumber) {
if (!this.discountRate) return aNumber;
else {
assert(this.discountRate >= 0);
return aNumber - this.discountRate * aNumber;
}
}
set discountRate(aNumber) {
assert(null === aNumber || aNumber >= 0);
this._discountRate = aNumber;
}
}
Previous10.5 특이 케이스 추가하기 (Introduce Special Case)Next10.7 제어 플래그를 탈출문으로 바꾸기 (Replace Control Flag with Break)
Last updated