减少if / else语句的复杂性?

时间:2018-06-14 15:19:47

标签: javascript jquery cyclomatic-complexity

我在下面有一个简洁的if / else语句:

function () {
    if (elem.attr('data-src-1') === '' && elem.attr('data-src-2') === '') {
      // scenario a
    } else if (elem.attr('data-src-1') === '' && elem.attr('data-src-2') !== '') {
      // scenario b
    } else if (elem.attr('data-src-1') !== '' && elem.attr('data-src-2') === '') {
      // scenario c
    } else {
      // scenario d
    }
}

通过严格的linting规则返回7的复杂性。我需要将其复杂度降低到6但却看不出如何使其更简洁?

2 个答案:

答案 0 :(得分:2)

更具可读性(至少对我而言)

let data1 = elem.attr('data-src-1') === ''
let data2 = elem.attr('data-src-2') === ''

if (data1)
    !data2 ? console.log(" scenario a ")  : console.log(" scenario b ") 
else
    data2 ?  console.log(" scenario c ") : console.log(" scenario d ") 

答案 1 :(得分:1)

这更多是代码审核问题,但您可以将if 1=''合并到if / elses中,然后对内部if / elses执行相同操作。

我认为这不太可读,但 在技术上不那么复杂。

function() {
  if (elem.attr('data-src-1') === '') {
    if (elem.attr('data-src-2') === '') {
      // scenario a
    } 
    else {
      // scenario b
    }
  } else if (elem.attr('data-src-2') === '') {
    // scenario c
  } 
  else {
    // scenario d
  }
}