美文网首页
高效的Kotlin——属性表示状态而不是行为

高效的Kotlin——属性表示状态而不是行为

作者: 珞泽珈群 | 来源:发表于2021-02-23 09:32 被阅读0次

    属性表示状态而不是行为(Properties should represent state, not behavior)

    Kotlin中的属性(property)不同于Java中的域(field),Kotlin中的属性应该看作是field + getter (+ setter):

    var name: String? = null
        get() = field?.toUpperCase()
        set(value) {
            if(!value.isNullOrBlank()) {
                field = value
            }
        }
    

    当然对于只读属性val是没有setter的。field也不是必须的,所以说,属性本质上讲就是function。正因为属性是function的本质,在Kotlin中某些方法也可以用属性来表示:

    val Context.notificationManager
    // or
    fun Context.getNotificationManager()
    

    那么什么时候应该使用属性,什么时候应该使用方法呢?这一条就是回答这个问题,基本原则是,属性表示的是状态,方法表示的是行为。在以下典型情形下应该考虑使用方法而不是属性:

    • 存在计算密集型运算,或者计算复杂度非常数O(1)。
    • 包含业务逻辑。
    • 非幂等,即连续多次调用会返回不一样的结果。
    • 方法的执行顺序影响返回值。
    • 可能抛出异常。

    相关文章

      网友评论

          本文标题:高效的Kotlin——属性表示状态而不是行为

          本文链接:https://www.haomeiwen.com/subject/zmukfltx.html