优化代码:使用if语句进行条件判断和代码重构
优化代码:使用if语句进行条件判断和代码重构
以下代码片段展示了如何优化一段包含复杂if语句的代码,通过使用更具语义化的变量名、拆分if语句、提取重复代码和使用三元运算符等方法,提高代码可读性和效率。
原始代码:
if(refreshType && (refreshType == 'addLevel' || refreshType == 'cut') && pasteLastObj){
if(griddata[i].parentId === pasteLastObj.parentId || griddata[i].parentId == pasteLastObj.id){
if(griddata[i].reqType == 'title' && ((griddata[i].isChanged && griddata[i].isChanged == "Y")||refreshType=='cut')){
if(griddata[i].reqLevel == level||refreshType=='cut') {
griddata[i].treeSort = num1 == 1&&refreshType!='cut'?pasteLastObj.treeSort+1:griddata[i].treeSort+1;
griddata[i].isChanged = 'Y';
} else {
griddata[i].treeSort=_sortId+1;
griddata[i].isChanged = 'Y';
}
}
_sortId++;
}
}
优化建议:
- 使用更加语义化的变量名,增加代码可读性。
- 将逻辑复杂的if语句拆分为多个if语句,使得代码更加清晰易懂。
- 将重复的代码提取出来,减少冗余,提高效率。
- 使用三元运算符简化代码。
优化后的代码:
if(refreshType && (refreshType === 'addLevel' || refreshType === 'cut') && pasteLastObj) {
for(let i = 0; i < griddata.length; i++) {
const data = griddata[i];
const isTitle = data.reqType === 'title';
const isChanged = data.isChanged === 'Y';
const isSameParent = data.parentId === pasteLastObj.parentId || data.parentId === pasteLastObj.id;
const isSameLevel = data.reqLevel === level || refreshType === 'cut';
if(isTitle && (isChanged || refreshType === 'cut') && isSameParent) {
if(isSameLevel) {
data.treeSort = num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1;
} else {
data.treeSort = _sortId + 1;
}
data.isChanged = 'Y';
_sortId++;
}
}
}
解释:
- 使用更具语义化的变量名,例如
isTitle、isChanged、isSameParent和isSameLevel,可以使代码更加易读。 - 将原本嵌套的if语句拆分为多个独立的if语句,每个if语句只负责判断一个条件,使代码逻辑更加清晰。
- 将重复的代码提取出来,例如
data.isChanged = 'Y'和_sortId++,减少冗余,提高效率。 - 使用三元运算符简化代码,例如
data.treeSort = num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1,使代码更加简洁。
通过这些优化,代码变得更加易读、易懂和高效。
原文地址: https://www.cveoy.top/t/topic/lrnY 著作权归作者所有。请勿转载和采集!