✏️1.6 계산 단계와 포맷팅 단계 분리하기
목표
단계 쪼개기
function statement(invoice, plays) {
return renderPlainText(invoice, plays); // 본문 전체를 별도 함수로 추출
}
function renderPlainText(invoice, plays) {
let result = `청구 내역(고객명): ${invocie.customer})\n`;
for (let perf of invoice.performaces) {
// 청구 내역을 출력한다.
result += ` ${playFor(perf).name}: ${usd(amountFor(perf))} ($perf.audience}석)\n`;
result += `총액: ${usd(totalAmount())}\n`;
result += `적립 포인트: ${totalVolumeCredits()}점\n`;
return result;
function totalAmount() {...}
function totalVolumeCredits() {...}
function usd(aNumber) {...}
function volumeCreditsFor(aPerformance) {...}
function playFor(aPerformance) {...}
function amountFor(aPerformance) {...}
}
실제로 데이터를 담아보자
함수 옮기기를 적용하여 playFor() 함수를 statement()로 옮긴다
playFor() 함수를 statement()로 옮긴다반복문을 파이프라인으로 바꾸기를 적용해보자
📍 첫 단계인 statement()에 필요한 데이터 처리에 해당하는 코드를 모두 별도 함수로 빼낸다.
statement()에 필요한 데이터 처리에 해당하는 코드를 모두 별도 함수로 빼낸다.⭐️ 마지막으로 컴파일-테스트-커밋하면 HTML 버전을 작성할 준비가 끝난다.
Last updated