降低 if/else 语句的复杂性?
Reducing if/else statement 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,但看不出如何使它更简洁?
这更像是一个代码审查问题,但您可以将 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
}
}
更具可读性(至少对我而言)
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 ")
下面我有一个简明的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,但看不出如何使它更简洁?
这更像是一个代码审查问题,但您可以将 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
}
}
更具可读性(至少对我而言)
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 ")