Change Function Declaration, 함수 선언 바꾸기에 대해 알아보자.
function circum(radius) { ... }
function circumference(radius) { ... }
이름이 안나올 때 함수의 동작을 주석으로 써보자. 그 주석에서 힌트를 얻어 이름으로 대체하자.
function circum(radius) {
return 2 * Math.PI * radius;
}
function circumference(radius) {
return 2 * Math.PI * radius;
}
function circum(radius) {
return 2 * Math.PI * radius;
}
function circum(radius) {
return circumference(radius);
}
function circumference(radius) {
return 2 * Math.PI * radius;
}
circum
의 내부 구현만을 대체하여 하위 버전 호환성을 유지했다.// Book Class
addReservation(custormer) {
this._reservations.push(customer);
}
addReservation
이 얼마나 많은 곳에서 사용하는지 확인해야 한다.// Book Class
addReservation(customer) {
this.zz_addReservation(customer, false);
}
zz_addReservation(customer, isPriority) {
this._reservations.push(customer);
}
// Book Class
addReservation(customer) {
this.zz_addReservation(customer, false);
}
zz_addReservation(customer, isPriority) {
this._reservations.push(customer);
}
zz_addReservation
호출부를 함수 인라인한다.function inNewEngland(aCustomer) {
return ["MA", "CT", "ME", "VT", "NH", "RI"].includes(aCustomer.address.state);
}
// 호출문
const newEnglanders = someCustomers.filter(c => inNewEngland(c));
customer
자체를 매개변수로 받고 있어 커플링이 심하다.function inNewEngland(aCustomer) {
const stateCode = aCustomer.address.state;
return ["MA", "CT", "ME", "VT", "NH", "RI"].includes(stateCode);
}
function inNewEngland(aCustomer) {
const stateCode = aCustomer.address.state;
return xxNEWinNewEngland(stateCode);
}
function xxNEWinNewEngland(stateCode) {
return ["MA", "CT", "ME", "VT", "NH", "RI"].includes(stateCode);
}
function inNewEngland(aCustomer) {
return xxNEWinNewEngland(aCustomer.address.state);
}
function xxNEWinNewEngland(stateCode) {
return ["MA", "CT", "ME", "VT", "NH", "RI"].includes(stateCode);
}
좋은 글 감사합니다.