gpt4 book ai didi

kotlin - ?:,null-safety和Elvis运算符的有效性?

转载 作者:行者123 更新时间:2023-12-02 12:49:53 24 4
gpt4 key购买 nike

我指的是Null-Safety in Kotlin:
我的一位同事总是这样写道:

bob ?: return
bob.department ?: return
bob.department.head ?: return
bob.department.head.name()
可读性是他的观点。对我来说,这不是 Kotlin (Kotlin)所喜欢的,并且过于详尽。我当然喜欢:
bob?.department?.head?.name()
一些不使用上限的参数/文档/链接将非常有帮助。
我想知道使用上部方法是否有任何缺点?
另外,我可以想象某些编译器优化不能很好地发挥作用,这样做是否占上风?
编辑:
根据SVN,历史告诉:
if (bob != null) {
if (bob.department != null) {
if (bob.department.head != null) bob.department.head.name()
}
}

最佳答案

您的版本含义有所不同:如果任何相关值是null,则您的版本将评估为null而不评估表达式的其余部分,而您的同事的return则立即执行而无需执行其余功能。
(当然,如果那还是函数的结尾,效果可能是相同的;我们必须先看一些上下文才能知道。)
因此,首选哪一个取决于null值是否应该中止所有后续操作。
一般来说,根据我的经验,您的版本更为常见。它还具有两个优点:简洁(在其他所有条件都相同的情况下是Good Thing™IMHO),重复次数更少(因此在DRY之后);并且当某人以后添加额外的行时,它不太可能引起意外,因此他们不必回溯并找出为什么不执行它们。
至于可读性,像您这样的代码行在Kotlin中是常见的习惯用法,因此开发人员确实应该使它们具有足够的可读性。实际上,避免像同事那样进行长链测试的能力(这是Java中所需要的)是?.安全调用运算符的主要优点之一!

关于kotlin - ?:,null-safety和Elvis运算符的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63031059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com