在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类中。
所以我的问题是性能和可维护性更好,为什么?
答案 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
作为一种语言功能,在实现众所周知的界面时更加有意义。