Kotlin 代码风格约定

代码约定

官方文档

本文包含了 Kotlin 语言当前的编码风格。

命名风格

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

  • 用驼峰命名法,并避免在名称中使用下划线
  • 类型名以大写字母开头
  • 方法和属性以小写字母开头
  • 用4个空格缩进
  • 公共方法应该配有说明文档

冒号

当冒号分隔了类型和超类型时冒号之前有一个空格;当冒号分隔实例和类型时冒号之前没有空格,:

interface Foo : Bar {
    fun foo(a: Int): T
}

Lambdas

在 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" 被省略了

}

函数 VS 属性

在某些情况下,没有参数的函数可能 可以和 只读属性 互换。
虽然语义是相似的,但是有一些风格约定是倾向于其中一个的。

在基础算法中,倾向于属性而非方法:

  • 不抛出错误
  • 有一个 O(1) 的复杂度
  • 易于计算
  • 返回结果与调用结果相同

你可能感兴趣的:(Kotlin 代码风格约定)