목적과 구현을 분리하여 합리적으로 코드를 분리하자
함수를 짧게 만들면 함수 호출이 많아질까?
→ 함수가 짧으면 캐싱하기 쉬워서 컴파일러가 최적화 할 때 유리할 떄가 많다.
⇒ 성능 최적화는 항상 일반 지침을 따르는 것이 좋다
절차
- 함수를 새로 만들고 목적을 잘 들어내는 이름을 붙인다.
- 매우 간단해도 목적이 더 잘 드러나는 이름으로 붙일 수 있으면 추출한다
- 이름이 떠오르지 않는다면 추출하면 안된다는 신호이다.
- 중첨 함수를 지원하는 언어는 중첩시킨다.
- 추출할 코드를 원본 함수에서 복사해서 새 함수에 붙인다.
- 추출한 코드에서 원본 함수의 지역 변수를 참조하거나 유효범위를 벗어나느 변수가 없는지 검사한다.
- 변수를 모두 처리하고 컴파일
- 추출 코드 중 새로 만든 함수를 호출하는 문자로 바꾼다
- 비슷한 코드가 존재하는지 확인
function printOwing(invoice) {
let outstanding = 0;
console.log("***********************");
console.log("**** Customer Owes ****");
console.log("***********************");
//미해결 채무 계산
for (const o of invoice.orders) {
outstanding += o.amount;
}
//마감일을 기록
const today = Clock.today();
// Cock.today는 Clck Wrapper로서 시스템 시계를 감싼다.
invoice.dueDate = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate() + 30,
);
console.log(`name: ${invoice.customer}`);
console.log(`amount: ${outstanding}`);
console.log(`due: ${invoice.dueDate.toLocaleDateString("en-US")}`);
}