优化代码:使用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++;
  }
}

优化建议:

  1. 使用更加语义化的变量名,增加代码可读性。
  2. 将逻辑复杂的if语句拆分为多个if语句,使得代码更加清晰易懂。
  3. 将重复的代码提取出来,减少冗余,提高效率。
  4. 使用三元运算符简化代码。

优化后的代码:

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

解释:

  1. 使用更具语义化的变量名,例如 isTitleisChangedisSameParentisSameLevel,可以使代码更加易读。
  2. 将原本嵌套的if语句拆分为多个独立的if语句,每个if语句只负责判断一个条件,使代码逻辑更加清晰。
  3. 将重复的代码提取出来,例如 data.isChanged = 'Y'_sortId++,减少冗余,提高效率。
  4. 使用三元运算符简化代码,例如 data.treeSort = num1 === 1 && refreshType !== 'cut' ? pasteLastObj.treeSort + 1 : data.treeSort + 1,使代码更加简洁。

通过这些优化,代码变得更加易读、易懂和高效。

优化代码:使用if语句进行条件判断和代码重构

原文地址: https://www.cveoy.top/t/topic/lrnY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录