安卓柯特林风格指南介绍


官方的科特林Style Guide因为Android一直由谷歌在2号维护2017年9月。Android Kotlin Style Guides为Kotlin编程中的源代码提供了完整的编码标准定义。一个Kotlin源文件被描述为Google Android风格的一部分。与其他编程风格指南一样,Kotlin专注于格式化问题以及各种类型的约定和编码标准。

适用于Android的Kotlin Style Guide包含重要更新,例如:

1.命名

如果源文件包含单个顶级元素(例如class),则文件名应使用.kt扩展名反映区分大小写的名称。对于多个顶级声明,定义描述源文件的名称和.kt扩展名。

class Chocos {}
// Chocobar.kt
class Chocobar {}
fun Runnable.toChocobar(): Chocobar = // …
 // Map.kt
 fun < T, O > Set < T > .map(func: (T) -> O): List < O > = // …
 fun < T, O > List < T > .map(func: (T) -> O): List < O > = // …


2.特殊字符

Kotlin支持在运行时可以表示为原始值的特殊字符、数字和布尔值。我们可以很容易地调用任何变量上的属性和成员函数。

空格字符

ASCII水平空格字符(0x20)是源文件中出现的空格字符。这意味着文字和字符串中的其他空格字符被转义。制表符不用于缩进。任何字符的特殊转义序列都具有序列\b、\n、\r、\t、\‘、\“、\\和\$,而不是相应的Unicode\u221e。

非ASCII字符

UNICODE字符(例如∞)或UNICODE转义(例如\u221e)用于非ASCII码字符。这两个字符的完美使用取决于代码,更容易阅读和理解。Unicode转义不鼓励可打印字符以及字符串文字和注释。

例子 讨论

VAL单位缩写=“μs”

好:清楚,没有评论。

VAL unitAbbrev=“\u03bcs”//μs

差:没有理由使用带有可打印字符的转义符

VAL unitAbbrev=“\u03bcs”

穷人:但读者不知道这是关于什么的。

return“\ufeff”+内容

好:如果需要,我可以对不可打印的字符和注释使用转义


3.格式设置

Kotlin支持在源文件中使用UTF-8字符编码。使用软制表符,制表符字符转换为空格。科特林语言中的每个主要元素都是定义的,并与单个空行分开。单行lambdas/class/Objects/enum在同一行上使用大括号,例如:

class Person(val firstName: String, val lastName: String, val age: Int){}

大括号

if (string.isEmpty()) return
when(value) {
 0 ->
  return
}

当主体包含单个语句或为空时,IF、FOR、DO、WHILE和WHEN语句需要大括号,例如:

if (string.isEmpty())
 return // not right
if (string.isEmpty()) {
 return // right
}

非空块

Kernighan&Ritchie风格(埃及方括号)后面是花括号,用来构建挡路和其他非空块。

  • 在开始的大括号之后,换行。
  • 在结束支撑之前,请换行。
  • 在开始的大括号之前没有换行。
  • 仅当右大括号终止语句、函数体、构造函数或类时,才在右大括号后换行。
return Runnable {
 while (condition()) {
  foo()
 }
}
return object: MyClass() {
 override fun foo() {
  if (condition()) {
   try {
    something()
   } catch (e: ProblemException) {
    recover()
   }
  } else if (otherCondition()) {
   somethingElse()
  } else {
   lastThing()
  }
 }
}

空块

空挡路或构造挡路必须以克耐特&里奇风格(埃及方括号)定义:

try {
 doSomething()
} catch (e: Exception) {} // WRONG!
try {
 doSomething()
} catch (e: Exception) {} // Okay


4.换行

超过100个字符的列限制的任何代码行都必须换行,如下所述:

例外情况:

  • 不可能出现符合列限制的行,例如长URL。
  • 在评论中,可以粘贴列行并将其剪切到外壳中。
  • 导入和打包语句。

功能

函数签名在其自己的行中定义每个参数声明。函数参数使用连续缩进(+7)、右括号和回车类型。

fun < T > Iterable < T > .joinToString(
 separator: CharSequence = ", ",
 prefix: CharSequence = "",
 postfix: CharSequence = ""
) String {}

表达式函数

包含单个表达式的函数表示为表达式函数。当表达式函数增长时,它们需要换行,因此使用普通函数体、返回类型声明和普通表达式换行规则。

override fun toString(): String {
 return "Hey"
}
override fun toString(): String = "Hey"


5.缩进

我们可以很容易地将缩进级别应用于挡路中的注释和代码。每当打开新的挡路和构造挡路时,缩进都会增加四个空格。挡路结束时,缩进返回到旧的缩进级别。

6.五只兰姆达(Lambdas)

lambdas是Kotlin编程中最好的工具之一。它们允许以更简单的方式实现模块化功能。下面,您将找到lambdas的样式指南:

  • “it”关键字用于访问单变量和单行lambdas参数。
  • Lambdas的嵌套限制为最多4级。
  • 当lambdas代码多次使用或包含更多行时,最好定义和使用函数。
  • 为lambda中的单个参数定义单个lambda参数,如下所示:

kotlin
list.filter {
 it > 10
}.map {
 element ->
  processElement(element)
 element * 2
}


Kotlin风格指南主要关注简洁性、简单性和可读性。谷歌宣布Kotlin编程语言支持Android应用程序开发。这增加了中国编程爱好者的兴奋情绪。Kotlin1.2RC(发布的候选版本)为Android应用程序开发带来了新的改进和实验支持。