抽出関数Extract Function
15736 ワード
背景
コード・セグメントを見つけて、何をしているのかを理解し、独立した関数として抽出し、名前を付けます.
コードを独立した関数にバンドルするタイミングについては数え切れないほどの意見がある.まず、長さを基準にすることができます.関数が画面を超えてはいけないルールを考えることができるとします.再使用性を基準にすることもできます.2回以上使用したコードを関数とし,1回のみ使用したコードをインライン状態とする.しかし、私から見れば、「目的と分離」の実現方法が最も合理的な基準だ.コードを見極め、何をしているのかを把握するのに時間がかかる場合は、関数として抽出し、「何が起こっているのか」に合った名前を付けます.これにより,後でコードを読み直す際に関数の目的が明らかになるが,本稿のコード(その関数が目的を達成するために具体的に実行される操作)については,ほとんど心配することはない.
プログラム
テスト
例
before
function printOwing(invoice){
let outstanding = 0;
console.log("**************");
console.log("****고객채무****");
console.log("**************");
//미해결채무(outstanding) 계산
for(const o of invoice.orders) {
outstanding += o.mount;
}
//마감일(dueDate)기록
const today = Clock.today;
invoice.dueDate = new Date(today.getFullYear(), today.getMonth()),
today.getDate() + 30);
// 세부사항 출력
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
console.log(`마감일: ${invoice.dueDate.toLocalDateString()}`);
}
after
function printOwing(invoice){
printBanner();
const outstanding = calculateOutstanding();
recordDueDate(invoice);
printDetails(outstanding);
function printBanner() {
console.log("**************");
console.log("****고객채무****");
console.log("**************");
}
function calculateOutstanding(invoice) {
let result = 0;
for(const o of invoice.orders) {
result += o.mount;
}
return result;
}
function recordDueDate(invoice) {
const today = Clock.today;
invoice.dueDate = new Date(today.getFullYear(), today.getMonth()),
today.getDate() + 30);
}
function printDetails(nvoice,outstanding) {
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
console.log(`마감일: ${invoice.dueDate.toLocalDateString()}`);
}
function printDetails(i) {
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
}
}
リファレンス
マーティン・パラーゼ2版再構築
Reference
この問題について(抽出関数Extract Function), 我々は、より多くの情報をここで見つけました
https://velog.io/@phjppo0918/함수-추출하기-Extract-Function
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
function printOwing(invoice){
let outstanding = 0;
console.log("**************");
console.log("****고객채무****");
console.log("**************");
//미해결채무(outstanding) 계산
for(const o of invoice.orders) {
outstanding += o.mount;
}
//마감일(dueDate)기록
const today = Clock.today;
invoice.dueDate = new Date(today.getFullYear(), today.getMonth()),
today.getDate() + 30);
// 세부사항 출력
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
console.log(`마감일: ${invoice.dueDate.toLocalDateString()}`);
}
function printOwing(invoice){
printBanner();
const outstanding = calculateOutstanding();
recordDueDate(invoice);
printDetails(outstanding);
function printBanner() {
console.log("**************");
console.log("****고객채무****");
console.log("**************");
}
function calculateOutstanding(invoice) {
let result = 0;
for(const o of invoice.orders) {
result += o.mount;
}
return result;
}
function recordDueDate(invoice) {
const today = Clock.today;
invoice.dueDate = new Date(today.getFullYear(), today.getMonth()),
today.getDate() + 30);
}
function printDetails(nvoice,outstanding) {
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
console.log(`마감일: ${invoice.dueDate.toLocalDateString()}`);
}
function printDetails(i) {
console.log(`고객명: ${invoice.customer}`);
console.log(`채무액: ${outstanding}`);
}
}
マーティン・パラーゼ2版再構築
Reference
この問題について(抽出関数Extract Function), 我々は、より多くの情報をここで見つけました https://velog.io/@phjppo0918/함수-추출하기-Extract-Functionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol