개요
매개변수는 함수의 동작에 변화를 줄 수 있는 일차적 수단
매개변수 목록은 적을 수록 좋다.
매개변수를 질의 함수로 바꾸지 말아야 할 상황도 있다. 매개변수를 제거하면 피호출 함수에 의존성이 생길 때다.
해당 함수가 몰랐으면 하는 프로그램 요소에 접근해야 하는 상황 생기는 경우(의존성 생김)
예시
어떠한 리팩터링을 수행한 후 더 이상 매개변수가 필요없어지는 경우
class Order{ get finalPrice(){ const basePrice = this.quantity * this.itemPrice; let discountLevel; if(this.quantity > 100) discountLevel = 2; else discountLevel = 1; return this.discountedPrice(basePrice, discountLevel); } discountedPrice(basePrice, discountLevel){ switch(discountLevel){ case 1: return basePrice * 0.95; case 2: return basePrice * 0.9; } } } |
class Order{ get finalPrice(){ const basePrice = this.quantity * this.itemPrice; return this.discountedPrice(basePrice, this.discountLevel); } get discountLevel(){ return this.quantity > 100 ? 2 : 1; } discountedPrice(basePrice, discountLevel){ switch(discountLevel){ case 1: return basePrice * 0.95; case 2: return basePrice * 0.9; } } } |
class Order{ get finalPrice(){ const basePrice = this.quantity * this.itemPrice; return this.discountedPrice(basePrice); } get discountLevel(){ return this.quantity > 100 ? 2 : 1; } discountedPrice(basePrice){ switch(this.discountLevel){ case 1: return basePrice * 0.95; case 2: return basePrice * 0.9; } } } |
'IT책, 강의 > 리팩터링' 카테고리의 다른 글
11 - API 리팩터링 - 생성자를 팩터리 함수로 바꾸기 (0) | 2023.09.18 |
---|---|
11 - API 리팩터링 - 세터 제거하기 (0) | 2023.09.17 |
11 - API 리팩터링 - 객체 통째로 넘기기 (0) | 2023.09.15 |
11 - API 리팩터링 - 플래그 인수제거하기 (0) | 2023.09.14 |
11 - API 리팩터링 - 매개변수화하기 (0) | 2023.09.13 |