javascript - 我可以在更大程度上重构这个代码块吗?需要一些建议
问题描述
布尔值?功能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 中是额外的。我只是想减少这里的冗余。
解决方案
您可以将布尔标志作为参数传递给函数,以在内部构建正确的对象,如下所示:
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);
}
推荐阅读
- excel - 在工作表之间进行宏传输数据时需要特殊粘贴
- javascript - 从 JSON Schema 模型派生 JSON 路径列表
- mysql - 使用触发器在 mySQL 中创建第二个表包括一些条件
- wso2 - 使用 wso2am-2.5.0 配置 wso2is-5.6.0 以访问 XACML 策略:出现错误
- php - 在客户的 Wordpress 网站上发现恶意代码
- c# - 如何使用名为 Action 的用户定义属性
- php - Laravel 会话返回 NULL
- nginx - Ubuntu Kubernetes 上的 Nginx 入口 IP 待处理
- laravel - Laravel - 中间件上的会话变量损失值
- git - 当 stdout 和 stderr 都被重定向时,为什么 git 仍然打印到屏幕上?