在Kotlin中正确使用”return if”。

huangapple go评论52阅读模式
英文:

Correct usage of return if in Kotlin

问题

在Kotlin中,你可以用两种方式编写下面的函数:

fun getProduct(id: Int): Product? {
    if (id < 1) return null
    return productProvider.getProduct(id) // 假设getProduct永远不会失败
}

或者如下:

fun getProduct(id: Int) = if (id > 0) {
   productProvider.getProduct(id) // 假设getProduct永远不会失败
} else {
    null
}

有人建议我始终使用后一种方式,因为这是正确的方式。有人能指导我吗?为什么第二种语法更好?

我可以猜测从性能的角度来看,它们完全相同,而且我个人认为第二种方式并不更易阅读。

英文:

So in Kotlin you can write the below function in two ways:

fun getProduct(id: Int): Product? {
    if (id &lt; 1 ) return null
    return productProvider.getProduct(id) /// Assuming getProduct NEVER fails
}

Or as below:

fun getProduct(id: Int) = if (id &gt; 0 ){
   productProvider.getProduct(id) /// Assuming getProduct NEVER fails
}else {
    null
}

I am being suggested to always use the latter, as is the proper way.
Can someone point me in the right direction on this? Why is the second syntax better?

I can guess that performance wise they are exactly the same and ( IMO ) I do not find the second one more readable at all.

答案1

得分: 0

这并不更加正确或者性能更好。这是一种风格选择。

你可以选择包括返回类型,使第二个选项更易阅读:

fun getProduct(id: Int): Product? = if (id > 0 ) {
    productProvider.getProduct(id)
} else {
    null
}

在这里,使用一个when表达式也可能有帮助。

英文:

It is not more correct or better-performing. It is a style choice.

You do have the option of including the return type to make the second one more readable:

fun getProduct(id: Int): Product? = if (id &gt; 0 ) {
    productProvider.getProduct(id)
} else {
    null
}

A when expression could also help here.

huangapple
  • 本文由 发表于 2023年2月14日 03:13:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/75440286.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定