我可以在更大程度上重构此代码块吗?需要一些建议


布尔值? 函数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
    })
}

我们能否消除两个函数的使用并使其通用? 只有键值对在函数 1 中是额外的。我只是想减少这里的冗余。

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

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

你真的需要这个功能吗?只需使用展开运算符,您可以在其中添加对象中不同的项目。

const params = myBool ?
  { a : 1, b: 2 } : {}
getInstance().updateItem(item, {
  ...params,
  [key]: cipFailedFlags
})

显示它正在运行的示例

/* just a mock */
const getInstance = () => ({
  updateItem: (a, b, c) => console.log(b)
})
function example(myBool) {
  const item = "1"
  const key = "x"
  const cipFailedFlags = "y"
  const params = myBool ? {
    a: 1,
    b: 2
  } : {}
  getInstance().updateItem(item, {
    ...params,
    [key]: cipFailedFlags
  })
}
example(true)
example(false)

最新更新