Abh*_*hek 5 coding-style idioms kotlin
在 Kotlin 中可以有两种编写辅助方法的方法
首先是
object Helper {
fun doSomething(a: Any, b: Any): Any {
// Do some businesss logic and return result
}
}
Run Code Online (Sandbox Code Playgroud)
或者干脆写这个
fun doSomething(a: Any, b: Any): Any {
// Do some businesss logic and return result
}
Run Code Online (Sandbox Code Playgroud)
在 Helper.kt 类中。
所以我的问题是在性能和可维护性方面哪个更好,为什么?
一般来说,您的首选应该是顶级函数。如果一个函数有一个明确的“主要”参数,您可以通过将其提取为扩展函数的接收者来使其更加惯用。
只不过object是其成员函数的名称空间的持有者。如果您发现有几组要分类的函数,则可以为object它们创建多个 s,以便可以使用对象名称来限定调用。除此之外,没有什么比他们对这个角色更有利的了。
object作为一种语言功能,当它实现一个众所周知的接口时,它就更有意义。
还有第三种可以说更惯用的方法:扩展函数。
fun Int.add(b: Int): Int = this + b
Run Code Online (Sandbox Code Playgroud)
并使用它:
val x = 1
val y = x.add(3) // 4
val z = 1.add(3) // 4
Run Code Online (Sandbox Code Playgroud)
在可维护性方面,我发现扩展函数与顶级函数或辅助类一样易于维护。我不太喜欢辅助类,因为随着时间的推移,它们最终会获得很多废品(人们发誓我们会重用但从未这样做的东西,我们已经为特殊用例所拥有的东西的奇怪变体,等等)。
就性能而言,这些问题都或多或少以相同的方式解决——静态的。Kotlin 编译器实际上会将所有这些编译为相同的 java 代码 - 一个具有静态方法的类。
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |