Kotlin编程规范

2017-05-25  本文已影响91人  CyrusChan

原文地址

命名样式:

<ul>
默认为Java编码规范,例如:
<li>对于名字使用驼峰式(并且避免使用下划线)
<li>类型首字母大写
<li>方法和属性首字母小写
<li>使用4空格缩进
<li>公共方法应该有文档例如Kotlin Doc中出现的那样
</ul>

冒号

当冒号隔开父类和子类时这里有空格,但是当冒号隔开实例和类型时这里没有空格。

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

Lambdas

在lambda表达式中,空格应该被使用在花括号的旁边。和分割方法体外的箭头一样。只要可能,lambda应该在括号之外传递

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

简洁和非嵌套的lambda。推荐使用it而不是明确的声明参数。在带参数的嵌套lambdas中,参数应该被明确声明。

Class header formatting

带参数的类能够用一句话实现

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 
}

Functions vs Properties //注:并不是很明白这段

在某些情况下无参函数和只读属性是可交换的。尽管语义相似。但是有些惯例供我们选择。
下面的情况我们应该选用一个属性
<ul>
<li>无异常抛出
<li>时间复杂度为O(1)
<li>很容易计算或者第一次执行会被缓存
<li>通过调用返回相同的结果
</ul>

上一篇下一篇

猜你喜欢

热点阅读