Kotlin入门之编码公约

该文章包含Kotlin语言的正确(当前)编码风格。

命名风格

如有疑问,请默认使用Java编码约定,例如:

  1. 使用驼峰命名法(避免使用下划线)
  2. 类的开头大写
  3. 方法和属性以小写开头
  4. 使用4空格缩进
  5. 公共方法应该有说明文档,以便其出现在Kotlin Doc

冒号

当冒号分割的是子类与基类,冒号之前应有一个空格;冒号分割的是实例和类型,则冒号前没有空格,示例如下:

interface Foo<out T : Any> : Bar {
    fun foo(a: Int): T
}

Lambda表达式

使用lambda表达式,大括号周围应该使用空格,将参数与方法体分开的箭头周围也应有空格。只要有可能,一个lambda应该被传递到括号之外(此话暂不理解)。

list.filter { it > 10 }.map { element -> element * 2 }

在短而不嵌套的lambdas中,推荐使用it,而不是明确声明参数。 在具有参数的嵌套lambdas中,参数应始终明确声明。

类头格式化

具有少量参数的类可以单行声明,如:

class Person(id: Int, name: String)

具有较长类头的类的声明应格式化,以使每个主构造函数单独成行。此外,右括号应该在新的一行。如果我们使用继承,则超类构造函数调用或实现接口列表应位于与括号相同的行上:

class Person(
    id: Int, 
    name: String,
    surname: String
) : Human(id, name) {
    // ...
}

对于多个接口,超类构造函数调用应置于首位,然后每个接口位于不同的行中:

class Person(
    id: Int, 
    name: String,
    surname: String
) : Human(id, name),
    KotlinMaker {
    // ...
}

构造函数参数可以使用常规缩进或连续缩进(双倍的常规缩进)。

Unit

如果一个函数返回Unit,则返回类型应该省略:

fun foo() { // ": Unit" is omitted here

}

函数和属性

在某些情况下,没有参数的函数可以与只读属性可互换。虽然语义相似,但仍有一些格式上的惯例来决定采用哪一方(无参函数和属性)。当出现以下逻辑时,更倾向采用属性而非函数:

  1. 不抛异常
  2. 复杂度低(has a O(1) complexity)
  3. 计算廉价(或只在第一次运行时计算)
  4. 调用返回相同的结果
    原文作者:键笔刀
    原文地址: https://www.jianshu.com/p/698a5fc53e83
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞