Kotlin 代碼風格約定

代碼約定

官方文檔

本文包含了 Kotlin 語言當前的編碼風格。

命名風格

若有疑問,請默認使用Java編碼約定,例如:

  • 用駝峰命名法,并避免在名稱中使用下劃線
  • 類型名以大寫字母開頭
  • 方法和屬性以小寫字母開頭
  • 用4個空格縮進
  • 公共方法應(yīng)該配有說明文檔

冒號

當冒號分隔了類型和超類型時冒號之前有一個空格;當冒號分隔實例和類型時冒號之前沒有空格,:

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

Lambdas

在 lambda 表達式中,應(yīng)該在大括號周圍以及分割參數(shù)的箭頭周圍使用空格。只要有可能,一個lambda應(yīng)該倍傳遞到括號之外。

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

在簡短并且不嵌套的lambdas中,建議使用 it約定 而不是明確聲明參數(shù);
在具有參數(shù)的嵌套lambdas中, 參數(shù)應(yīng)始終明確聲明。

類頭部格式化

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

class Person(id: Int, name: String)

具有較長頭部的類應(yīng)該格式化,使得每個主構(gòu)造參數(shù)在有同樣縮進的單獨的行中。
此外,右括號應(yīng)該在新的一行。如果使用繼承,那么父類構(gòu)造函數(shù)的調(diào)用或接口列表應(yīng)該和右括號在同一行。

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

對于多個接口,父類構(gòu)造函數(shù)應(yīng)該放在第一個,并且每一個接口應(yīng)該單獨寫在一行。

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

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

單元 Unit

如果一個函數(shù)返回 Unit, 返回值類型可以省略不寫:

fun foo() { // ": Unit" 被省略了

}

函數(shù) VS 屬性

在某些情況下,沒有參數(shù)的函數(shù)可能 可以和 只讀屬性 互換。
雖然語義是相似的,但是有一些風格約定是傾向于其中一個的。

在基礎(chǔ)算法中,傾向于屬性而非方法:

  • 不拋出錯誤
  • 有一個 O(1) 的復(fù)雜度
  • 易于計算
  • 返回結(jié)果與調(diào)用結(jié)果相同
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Python是一種對代碼風格很重視的語言,從縮進就能看出這一點,Python強調(diào)易于理解。最近在負責代碼重構(gòu)的工作...
    知曰閱讀 11,083評論 1 85
  • Hello Word 在屏幕上打印“Hello, world”,可以用一行代碼實現(xiàn): 你不需要為了輸入輸出或者字符...
    restkuan閱讀 3,215評論 0 6
  • iOS編程規(guī)范0規(guī)范 0.1前言 為??高產(chǎn)品代碼質(zhì)量,指導(dǎo)廣大軟件開發(fā)人員編寫出簡潔、可維護、可靠、可 測試、高效...
    iOS行者閱讀 4,496評論 21 35
  • 1.0-基礎(chǔ)部分 pragma mark:輸出常量和變量 你可以用print(_:separator:termin...
    037e3257fa3b閱讀 931評論 2 7
  • 靜靜的池水,青青的翠竹,蔽日的大樹,曲曲折折的小路上,很是清幽——這是香山上通往白園的路。路旁是古色古香的香山茶社...
    花香一縷閱讀 167評論 0 0