most from reference
命名规则
1.使用驼峰式命名规则,尽量避免在命名中使用下划线
2.类型以大写字母开头
3.方法和属性以小写字母开头
4.使用4个空格缩进
5.public的方法加上注释说明,以便他们能出现在Kotlin Doc中
冒号
分隔子类和父类的冒号前面应该加上一个空格,分隔对象实体和类的冒号前面没有空格
interface Foo<out T : Any> : Bar {
fun foo(a: Int): T
}
Lambdas
在Lambda表达式中,空格用于在大括号周围(前后都有空格),以及分隔参数的箭头,如果可能,一个Lambda表达式应该在括号之外传递。
list.filter { it > 10 }.map { element -> element * 2 }
在比较短而且不是嵌套的Lambda表达式中,推荐使用it关键字代替直接重新定义变量。在嵌套的Lambda的表达式中,参数应该始终明确。
类头文件格式
带有很少参数的类可以写成一行
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.没有throw Exception
2.有o(1)复杂度
3.计算简便(第一次运行缓存)
4.调用的时候返回相同的结果