首页 > 解决方案 > 我可以在更大程度上重构这个代码块吗?需要一些建议

问题描述

布尔值?功能1(项目,键):功能2(项目,键)

基于布尔值,它进入任何一个函数。所以可以在更大程度上重构它。需要建议。谢谢。

function1(item, key) {
    getInstance().updateItem(item, {
        flag1: "Fail",
        flag2: "Fail",
        flag3: "Fail",
        flag4: "Fail",
        flag5: "Fail",
        [key]: cipFailedFlags
     })
}

function2(item, key) {
    getInstance().updateItem(item, {
        [key]: cipFailedFlags
    })
}

我们可以消除两个功能的使用并使其通用吗?只有键值对在 function1 中是额外的。我只是想减少这里的冗余。

标签: javascriptnode.js

解决方案


您可以将布尔标志作为参数传递给函数,以在内部构建正确的对象,如下所示:

function oneFn(item, key, flag) {
    getInstance().updateItem(item, Object.assign(
        { [key]: cipFailedFlags },
        flag ? { flag1: "Fail", flag2: "Fail", /* etc... */ } : {}
    ));
}

如果您认为三元运算符使其可读性降低,则可以改用变量和if语句来更改函数:

function oneFn(item, key, flag) {
    let config = { [key]: cipFailedFlags };
    if (flag) {
        config = { ...config, flag1: "Fail", flag2: "Fail", /* etc... */ };
    }
    getInstance().updateItem(item, config);
}

推荐阅读