回报价值的最佳实践

时间:2019-07-10 12:39:13

标签: javascript

我经常想知道允许顺序执行来确定返回值和终止点是否不好。 EG(这是围绕IF语句的问题,因此请忽略以下事实:有许多更好的方法可以执行此简单功能!):

ssl

相同的效果,比以下的效果更小,但可读性更低:

function isGreaterthanTen(val) {
  if(val > 10) return true;
  return false;
}

那么,在明智和/或明智的最佳实践中,一个比另一个更好吗?

2 个答案:

答案 0 :(得分:2)

您应该避免编写所谓的意大利面条代码。这意味着,一个人应该能够阅读您的代码,而不必从一个地方跳到另一个地方来解开并理解它。在代码中间包含return语句可以被视为意大利面条式代码,尤其是在较长的函数中。

我更喜欢使用一个返回语句来返回一个变量,该变量在函数顶部声明并在整个执行过程中进行操作。

function isGreaterthanTen(val) {
    let isGreater = false;

    if (val > 10) {
        isGreater = true;
    }

    return isGreater;
}

当然,该功能可以简化为:

function isGreaterthanTen(val) {
    return val > 10;
}

在验证数据并阻止执行时,该函数的顶部是该规则允许的一个例外:

function isGreaterthanTen(val) {
    if (typeof val !== 'number')
        return;

    return val > 10;
}

如果参数不是数字,则填充不返回任何内容。

答案 1 :(得分:1)

在我目前的工作中,潜在客户永远不建议在没有括号的情况下建议使用单行执行,而readability则没有括号。

if(true) {
 return 'good practice'
}

if(true) 
 return 'bad practice'

我始终遵循的另一个相关点是首先检查negative的值

if(false) {
  return 'this is the negative case'
}
return 'case for most of the positive case'

但是我知道处理这种单行returns

的不同方法

如果仅boolean,则可以简单地返回条件

function foo(){
 return 1 === 1
}

console.log(foo())

如果您的值被视为真实或虚假而非布尔值,则可以仅对boolean值使用强制值

function foo() {
 return !!1 // 1 treated as true 
}

console.log(foo())

如果要返回两个不同的值,那么您可能也使用三进制。

function foo() {
 const me = 'satyam',
  friend = 'jack',
  satyamAge = 23
  
  return satyamAge === 20 ? me : friend

}

console.log(foo())