如何优化以下代码
if (isReadOnly.value) {if (currentDisplayModel.value.MainTableAlias === table.Alias) {tableMenuOptions.value.menuList[0].label = '取消选中';} else {tableMenuOptions.value.menuList[0].disabled = false;tableMenuOptions.value.menuList[0].label = '选中表格';}} else {if (currentDisplayModel.value.MainTableAlias === table.Alias) {tableMenuOptions.value.menuList[0].label = '取消选中';} else {tableMenuOptions.value.menuList[0].disabled = false;tableMenuOptions.value.menuList[0].label = '取消选中';}}
这段代码可以通过减少重复代码和简化条件逻辑来优化。首先,可以观察到,无论 isReadOnly.value
的值如何,只要 currentDisplayModel.value.MainTableAlias
等于 table.Alias
,label
都被设置为取消选中的文本。另外,当 isReadOnly.value
为 false
且 currentDisplayModel.value.MainTableAlias
不等于 table.Alias
时,disabled
属性被设置为 false
。
// 首先检查是否是主表
if (currentDisplayModel.value.MainTableAlias === table.Alias) {tableMenuOptions.value.menuList[0].label = '取消选中';
} else {// 如果不是主表,根据是否只读设置 label 属性tableMenuOptions.value.menuList[0].label = isReadOnly.value ? '选中表格' : '取消选中';tableMenuOptions.value.menuList[0].disabled = false;
}
优化点:
-
消除重复:将设置
label
为'选中表格'
的逻辑移动到条件之外,因为无论isReadOnly.value
如何,这个值只在不是选中的情况下设置一次。 -
简化条件:使用三元运算符来简化
isReadOnly.value
的检查,直接在一行中设置label
和disabled
属性。 -
提高可读性:通过提前返回或继续到下一个条件,减少嵌套的深度,使代码更易于阅读和维护。
这种优化不仅减少了代码量,还提高了代码的可读性和可维护性。