鍍金池/ 教程/ Android/ Kotlin編碼約定/編碼風(fēng)格
Kotlin內(nèi)聯(lián)函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(Eclipse)
Kotlin調(diào)用Java代碼
Kotlin使用Ant
Kotlin編譯器插件
Kotlin相等性
Kotlin JavaScript模塊
編寫Kotlin代碼文檔
Kotlin返回和跳轉(zhuǎn)
Kotlin異常處理
Kotlin可見性修飾符
Kotlin委托
Kotlin委托屬性
Kotlin編碼約定/編碼風(fēng)格
Kotlin基礎(chǔ)語法
使用Kotlin進(jìn)行服務(wù)器端開發(fā)
Kotlin接口
Kotlin反射
Kotlin類型別名
Kotlin枚舉類
Kotlin當(dāng)前版本是多少?
Kotlin注解處理工具
Kotlin類型的檢查與轉(zhuǎn)換
Kotlin屬性和字段
Kotlin類型安全的構(gòu)建器
Kotlin相比Java語言有哪些優(yōu)點(diǎn)?
Kotlin JavaScript反射
Kotlin 是什么?
Kotlin泛型
Kotlin慣用語法
Kotlin與OSGi
Kotlin數(shù)據(jù)類型
Kotlin是面向?qū)ο筮€是函數(shù)式語言?
Kotlin動態(tài)類型
Kotlin協(xié)程
Kotlin操作符符重載
Kotlin使用Gradle
Kotlin密封類
Kotlin兼容性
Kotlin集合
Kotlin調(diào)用JavaScript
Kotlin null值安全
Kotlin函數(shù)
Kotlin開發(fā)環(huán)境設(shè)置(IntelliJ IDEA)
Kotlin嵌套類
Kotlin控制流程
Kotlin和Java語言比較
Kotlin 與 Java 語言兼容嗎?
Kotlin教程
Kotlin類和繼承
Kotlin對象表達(dá)式和對象聲明
JavaScript中調(diào)用Kotlin
Kotlin區(qū)間/范圍
Kotlin數(shù)據(jù)類
Kotlin lambda表達(dá)式
Kotlin是免費(fèi)的嗎?
Kotlin包
使用Kotlin進(jìn)行Android開發(fā)
在Java中調(diào)用Kotlin代碼
Kotlin this表達(dá)式
使用Kotlin進(jìn)行JavaScript開發(fā)
Kotlin擴(kuò)展
Kotlin解構(gòu)聲明
Kotlin注解
Kotlin使用Maven

Kotlin編碼約定/編碼風(fēng)格

在本篇文章中,主要是介紹Kotlin語言的當(dāng)前編碼風(fēng)格。

命名風(fēng)格

如果有疑問,請使用Java編碼約定,例如:

  • 使用駝峰名稱格式(并避免在名稱中使用下劃線)
  • 類型從大寫字母開始
  • 方法和屬性以小寫字母開始
  • 使用4空格縮進(jìn)
  • 公共函數(shù)應(yīng)該放置到通用文件中,并以Kotlin文檔呈現(xiàn)

冒號

冒號之前有一個空格,冒號分隔了類型和超類型,并且沒有空格,冒號分隔實(shí)例和類型:

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

Lambda表達(dá)式

在lambda表達(dá)式中,大括號周圍應(yīng)該使用空格,以及將參數(shù)與主體使用箭頭分開。 只要有可能,lambda應(yīng)該傳遞到括號之外。

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

在短而且不嵌套的lambdas中,建議使用它的慣例,而不是明確聲明參數(shù)。 在具有參數(shù)的嵌套lambdas中,參數(shù)應(yīng)始終要明確聲明。

類頭格式化

有幾個參數(shù)的類可以寫成一行:

class Person(id: Int, name: String)

具有較長頭的類應(yīng)格式化,每個主構(gòu)造函數(shù)參數(shù)使用單獨(dú)的行縮進(jìn)。 此外,右括號應(yīng)該在新的一行。 如果使用繼承,則超類構(gòu)造函數(shù)調(diào)用或?qū)崿F(xiàn)接口列表應(yīng)位于與括號相同的行上:

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

對于多個接口,超類構(gòu)造函數(shù)調(diào)用應(yīng)首先定位,然后每個接口應(yīng)位于不同的行中:

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

構(gòu)造函數(shù)參數(shù)可以使用常規(guī)縮進(jìn)或連續(xù)縮進(jìn)(雙倍的常規(guī)縮進(jìn))。

Unit 編碼風(fēng)格

如果函數(shù)返回Unit,則返回類型應(yīng)該省略:

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

}

函數(shù)和屬性

在某些情況下,沒有參數(shù)的函數(shù)與只讀屬性可互換。雖然語義是相似的,但是有一些風(fēng)格約定的時候可適當(dāng)選擇使用。

當(dāng)用在基礎(chǔ)算法時,屬性優(yōu)先于函數(shù)情況:

  • 不拋出
  • 具有O(1)復(fù)雜性
  • 是廉價的計算(或caсhed在第一次運(yùn)行)
  • 通過調(diào)用返回相同的結(jié)果

上一篇:Kotlin相等性下一篇:Kotlin教程