美文网首页
Kotlin编码约定

Kotlin编码约定

作者: 公子小水 | 来源:发表于2017-08-05 05:26 被阅读27次

译自《Coding Conventions》

该页面包含Kotlin语言的当前编码风格。

命名风格

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

  • 使用camelCase方式命名(并避免在名称中使用下划线)
  • 类型以大写开始
  • 方法和属性从小写开始
  • 使用4空格缩进
  • 公共函数应该有文档,使其出现在Kotlin Doc中

冒号之前的空格

当冒号分隔了类型和超类型(type and supertype)时,冒号之前有一个空格;而当冒号分隔实例和类型(instance and type)时,冒号之前没有空格:

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

Lambda表达式

在lambda表达式中,大括号周围应该使用空格,且将参数与正文分开的箭头周围也应该有空格。 只要有可能,一个lambda表达式应该被传递到括号之外(passed outside of parentheses)。

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

在短而不嵌套的lambda中,建议使用it惯例,而不是明确声明参数。 在具有参数的嵌套lambda中,参数应始终明确地声明。

类头格式化(Class header formatting)

有几个参数的类可以写成一行:

class Person(id: Int, name: String)

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

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

对于多个接口,超类构造函数的调用(superclass constructor call)应首先定位,然后每个接口应位于不同的行中:

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

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

Unit

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

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

}

函数与属性(Functions vs Properties)

在某些情况下,没有参数的函数可能与只读属性可互换(interchangeable )。 虽然语义是相似的,但是有一些风格约定(stylistic conventions),决定什么时候更偏向某一个。

当底层算法(underlying algorithm)满足如下条件时,属性优先于函数:

  • 不抛出异常(throw
  • 具有O(1)复杂度
  • 计算上容易(或者在第一次运行后cache住)
  • 多次调用返回相同的结果

相关文章

  • Kotlin编码约定

    译自《Coding Conventions》 该页面包含Kotlin语言的当前编码风格。 命名风格 如果有疑问,请...

  • Kotlin 代码风格约定

    代码约定 官方文档 本文包含了 Kotlin 语言当前的编码风格。 命名风格 若有疑问,请默认使用Java编码约定...

  • Kotlin入门之编码公约

    该文章包含Kotlin语言的正确(当前)编码风格。 命名风格 如有疑问,请默认使用Java编码约定,例如: 使用驼...

  • Kotlin 编码规约

    Kotlin 编码规约 编码规范 本页包含当前 Kotlin 语言的编码风格。 源代码组织 命名规则 格式化 文档...

  • kotlin运算符重载及约定

    kotlin中功能与特定函数命名相关,而不是与特定类型绑定,这种技术称为约定。kotlin使用约定的原则,并不像J...

  • 英文文档翻译--Kotlin(三、编码习惯)

    编码习惯 Kotlin 的语言编码风格 命名风格 命名风格默认和 Java 编码习惯一样,比如: 命名使用驼峰风格...

  • Maven 如何编译 java 和 kotlin 编码的混合项目

    Maven 如何编译 java 和 kotlin 编码的混合项目 一、前提 应用程序同时使用java和kotlin...

  • 正确理解Kotlin中@JvmOverloads、@JvmSta

    看注解的名字就知道,这是kotlin 为了让Java更好的使用kotlin 编码而写的注解。 一 、@JvmOve...

  • Kotlin编码范式

    译自Kotlin Idioms 这里是Kotlin中随机和经常使用的范式的集合。 如果你有一个最喜欢的范式,可以通...

  • Kotlin编码规范

    该规范参考Kotlin语言中文站[https://www.kotlincn.net/docs/reference/...

网友评论

      本文标题:Kotlin编码约定

      本文链接:https://www.haomeiwen.com/subject/nwhilxtx.html