【问题标题】:Get rid of useless return statement摆脱无用的返回语句
【发布时间】:2018-09-08 07:59:42
【问题描述】:

我正在尝试重构一些代码并使其更易于阅读。我注意到在某些函数的末尾有一些不必要的返回语句。这是一个概念性示例:

func someFunction(a []arr) int {
    for _,v := range a {
        if v == something {
            // will defenitly get here at some point! 
            return somethingElse
        }
    }
    return -1 // never ever happens! 
} 

在我看来,函数末尾的 return 语句具有误导性,因为它表明它可能会在某个时候到达。我该如何预防?

请注意,我在其他地方进行错误处理,这就是为什么我可以确定someFunction 将始终返回somethingElse

【问题讨论】:

  • something 的类型是什么,我们可以保存它并在指定一种只返回所需值的方式后返回它

标签: loops go return return-value


【解决方案1】:

恐慌而不是在函数末尾返回假值:

func someFunction(a []arr) int {
    for _,v := range a {
        if v == something {
            // will defenitly get here at some point! 
            return somethingElse
        }
    }

    panic("unreachable")
} 

这是standard library 中的常见模式。

【讨论】:

  • 就是这样。任何无法到达的地方都应该恐慌。如果函数以恐慌结束,Go 编译器甚至会接受丢失的返回。
  • @GrzegorzŻur 完全是 :)
  • 非常感谢您的建议。我会这样做的
猜你喜欢
  • 2020-07-05
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多