拆分函数
拆分功能太多的函数
下面是一个打印账单的程序:
function printBill(data = []) {
// 汇总数据
const total = {};
data.forEach((item) => {
if (total[item.department] === undefined) {
total[item.department] = 0;
}
total[item.department] += item.value;
});
// 打印汇总后的数据
const keys = Object.keys(total);
keys.forEach((key) => {
console.log(`${key} 部门:${total[key]}`);
});
}
printBill([
{
department: "销售部",
value: 89,
},
{
department: "后勤部",
value: 132,
},
{
department: "财务部",
value: 78,
},
{
department: "总经办",
value: 90,
},
{
department: "后勤部",
value: 56,
},
{
department: "总经办",
value: 120,
},
]);
可以看到这个 printBill() 函数实际上包含有两个功能:汇总和打印。我们可以把汇总数据的代码提取出来,封装成一个函数。这样 printBill() 函数就只需要关注打印功能了。
function printBill(data = []) {
const total = calculateBillData(data);
const keys = Object.keys(total);
keys.forEach((key) => {
console.log(`${key} 部门:${total[key]}`);
});
}
function calculateBillData(data) {
const total = {};
data.forEach((item) => {
if (total[item.department] === undefined) {
total[item.department] = 0;
}
total[item.department] += item.value;
});
return total;
}