Kotlin的好处是无需在类中包装就可以编写helper / util方法

时间:2018-08-16 14:12:50

标签: kotlin coding-style idiomatic

在Kotlin中有两种编写辅助方法的方法

第一个是

object Helper {
    fun doSomething(a: Any, b: Any): Any {
        // Do some businesss logic and return result
    }
}

或者简单地写

fun doSomething(a: Any, b: Any): Any {
    // Do some businesss logic and return result
}

在Helper.kt类中。

所以我的问题是性能和可维护性更好,为什么?

2 个答案:

答案 0 :(得分:3)

还有第三种,也许是更惯用的方式:extension functions

fun Int.add(b: Int): Int = this + b

并使用它:

val x = 1
val y = x.add(3) // 4

val z = 1.add(3) // 4

在可维护性方面,我发现扩展功能与顶级功能或帮助程序类一样容易维护。我不是助手类的忠实拥护者,因为随着时间的推移,它们最终会带来很多麻烦(人们发誓我们会重复使用但永远不会再做的事情,对于特殊用例来说,我们已经拥有的奇怪的变体,等等)。

就性能而言,这些都是或多或少以静态方式解决的。 Kotlin编译器将有效地将所有这些编译为相同的Java代码-具有静态方法的类。

答案 1 :(得分:2)

通常,您的首选应该是顶级功能。如果某个函数具有明确的“主要”参数,则可以通过将其提取为扩展函数的接收者来使其更加惯用。

object只不过是其成员函数名称空间的持有人。如果发现有几组要分类的功能,则可以为它们创建多个object,以便可以使用对象名称来限定调用。他们除了胜任这个角色外,没有其他事情。

object作为一种语言功能,在实现众所周知的界面时更加有意义。