Kotlin的編碼風(fēng)格

1. 命名風(fēng)格

  • 使用(camelCase)駝峰命名法,避免使用下劃線
  • 類型以大寫字母開頭
  • 方法和屬性以小寫字母開頭
  • 使用四個空格縮進(jìn)
  • 公共部分應(yīng)該添加描述,會出現(xiàn)在Kotlin的Doc中

2. 冒號的使用

  • 當(dāng)分隔類型和超類型時,冒號前面應(yīng)該有一個空格
  • 當(dāng)分隔實例和類型時,冒號前面沒有空格
interface Foo<out T : Any> : Bar {//第一條規(guī)則
      fun foo(a: Int): T //第二條規(guī)則
}

3. Lambda表達(dá)式

  • 大括號周圍應(yīng)該使用空格(左邊大括號的左右以及右邊大括號的左邊使用空格)
  • 箭頭兩側(cè)要使用空格
  • 盡可能的讓表達(dá)式寫在括號之外(即不推薦將表達(dá)式作為參數(shù))
list.filter { it > 10 }.map { element -> element * 2 }
  • 在沒有嵌套并且比較短的表達(dá)式中,推薦使用it作為明確的參數(shù)申明
  • 在嵌套的表達(dá)式中,參數(shù)應(yīng)該總是被明確的申明

4. 類定義

  • 類只有少數(shù)參數(shù)時,可以寫成一行
    class Person(id: Int, name: String)
  • 類有很多參數(shù)時,
    1. 每一個參數(shù)應(yīng)該分行并且縮進(jìn)書寫。
    2. 右括號獨立一行
    3. 如果使用了繼承,那么超類的構(gòu)造函數(shù)調(diào)用應(yīng)該在同一行書寫
class Person(
          id: Int, 
          name: String,
          surname: String
) : Human(id, name) {
          // ...
}
4. 使用了繼承并且實現(xiàn)了接口的情況,應(yīng)該首先調(diào)用超類的構(gòu)造函數(shù),其次再為每一個實現(xiàn)的接口另起一行。
class Person(
          id: Int, 
          name: String,
          surname: String
) : Human(id, name),
           KotlinMaker {
            // ...
}

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

5. Unit

如果一個方法的返回值是Unit,那么Unit可以省略不寫。

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

}

6. 方法和屬性的選擇

在某些情況下,沒有參數(shù)的函數(shù)可能與只讀屬性可互換通用,雖然語義相似,但是有一些風(fēng)格約束在某些情況該選擇具體的方式,以下情況中,更喜歡使用屬性而不是方法

  1. 不會拋出異常
  2. 具有O(1)的復(fù)雜性
  3. 容易計算(或者運行一次之后緩存結(jié)果)
  4. 每次調(diào)用返回同樣的結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,706評論 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,194評論 1 10
  • 編寫HTTP模塊 幾個重要組成部分ngx_command_t 數(shù)組對于我們在nginx.conf 中編寫的配置項 ...
    Spike_3154閱讀 2,650評論 0 1
  • 注意:你可以下載本站提供的 jar 包:mysql-connector-java-5.1.39-bin.jar(h...
    亦晴工作室閱讀 760評論 0 0

友情鏈接更多精彩內(nèi)容