Skip to main content

拆分函数

拆分功能太多的函数

下面是一个打印账单的程序:

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;
}