如果有疑问,请使用Java编码约定,例如:
4
空格缩进
冒号之前有一个空格,冒号分隔了类型和超类型,并且没有空格,冒号分隔实例和类型:
interface Foo<out T : Any> : Bar { |
fun foo(a: Int): T |
} |
在lambda表达式中,大括号周围应该使用空格,以及将参数与主体使用箭头分开。 只要有可能,lambda应该传递到括号之外。
list.filter { it > 10 }.map { element -> element * 2 } |
在短而且不嵌套的lambdas中,建议使用它的惯例,而不是明确声明参数。 在具有参数的嵌套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
,则返回类型应该省略:
fun foo() { // ": Unit" is omitted here |
} |
在某些情况下,没有参数的函数与只读属性可互换。虽然语义是相似的,但是有一些风格约定的时候可适当选择使用。
当用在基础算法时,属性优先于函数情况: