Kotlin編碼約定

譯自《Coding Conventions》

該頁(yè)面包含Kotlin語(yǔ)言的當(dāng)前編碼風(fēng)格届宠。

命名風(fēng)格

如果有疑問,請(qǐng)默認(rèn)使用Java編碼約定乘粒,例如:

  • 使用camelCase方式命名(并避免在名稱中使用下劃線)
  • 類型以大寫開始
  • 方法和屬性從小寫開始
  • 使用4空格縮進(jìn)
  • 公共函數(shù)應(yīng)該有文檔豌注,使其出現(xiàn)在Kotlin Doc中

冒號(hào)之前的空格

當(dāng)冒號(hào)分隔了類型和超類型(type and supertype)時(shí),冒號(hào)之前有一個(gè)空格灯萍;而當(dāng)冒號(hào)分隔實(shí)例和類型(instance and type)時(shí)轧铁,冒號(hào)之前沒有空格:

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

Lambda表達(dá)式

在lambda表達(dá)式中,大括號(hào)周圍應(yīng)該使用空格旦棉,且將參數(shù)與正文分開的箭頭周圍也應(yīng)該有空格齿风。 只要有可能药薯,一個(gè)lambda表達(dá)式應(yīng)該被傳遞到括號(hào)之外(passed outside of parentheses)。

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

在短而不嵌套的lambda中救斑,建議使用it慣例童本,而不是明確聲明參數(shù)。 在具有參數(shù)的嵌套lambda中脸候,參數(shù)應(yīng)始終明確地聲明穷娱。

類頭格式化(Class header formatting)

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

class Person(id: Int, name: String)

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

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

對(duì)于多個(gè)接口嫁盲,超類構(gòu)造函數(shù)的調(diào)用(superclass constructor call)應(yīng)首先定位,然后每個(gè)接口應(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

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

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

}

函數(shù)與屬性(Functions vs Properties)

在某些情況下澜共,沒有參數(shù)的函數(shù)可能與只讀屬性可互換(interchangeable )向叉。 雖然語(yǔ)義是相似的,但是有一些風(fēng)格約定(stylistic conventions)嗦董,決定什么時(shí)候更偏向某一個(gè)。

當(dāng)?shù)讓铀惴ǎ╱nderlying algorithm)滿足如下條件時(shí),屬性優(yōu)先于函數(shù):

  • 不拋出異常(throw
  • 具有O(1)復(fù)雜度
  • 計(jì)算上容易(或者在第一次運(yùn)行后cache字裆臁)
  • 多次調(diào)用返回相同的結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末辫樱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匹摇,更是在濱河造成了極大的恐慌咬扇,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廊勃,死亡現(xiàn)場(chǎng)離奇詭異懈贺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坡垫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門梭灿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冰悠,你說我怎么就攤上這事堡妒。” “怎么了溉卓?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵皮迟,是天一觀的道長(zhǎng)搬泥。 經(jīng)常有香客問我,道長(zhǎng)伏尼,這世上最難降的妖魔是什么佑钾? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮烦粒,結(jié)果婚禮上休溶,老公的妹妹穿的比我還像新娘。我一直安慰自己扰她,他們只是感情好兽掰,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徒役,像睡著了一般孽尽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忧勿,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天杉女,我揣著相機(jī)與錄音,去河邊找鬼鸳吸。 笑死熏挎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晌砾。 我是一名探鬼主播坎拐,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼养匈!你這毒婦竟也來了哼勇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呕乎,失蹤者是張志新(化名)和其女友劉穎积担,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猬仁,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帝璧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逐虚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聋溜。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叭爱,靈堂內(nèi)的尸體忽然破棺而出撮躁,到底是詐尸還是另有隱情,我是刑警寧澤买雾,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布把曼,位于F島的核電站杨帽,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嗤军。R本人自食惡果不足惜注盈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望叙赚。 院中可真熱鬧老客,春花似錦、人聲如沸震叮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)苇瓣。三九已至尉间,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間击罪,已是汗流浹背哲嘲。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留媳禁,地道東北人眠副。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像损话,于是被迫代替她去往敵國(guó)和親侦啸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子槽唾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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

  • 前言 人生苦多丧枪,快來 Kotlin ,快速學(xué)習(xí)Kotlin庞萍! 什么是Kotlin拧烦? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,217評(píng)論 9 118
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,521評(píng)論 1 51
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,817評(píng)論 1 10
  • 今天有點(diǎn)小感觸。 刷微博看到蘇醒和他家蘇總阿荷的美國(guó)之行钝计。特別好恋博。人們總是想著多少歲之前我要掙多少錢有多高成就,然...
    9e3124d0a2cf閱讀 148評(píng)論 0 0
  • 今年的除夕夜又如同往年的一樣私恬,一家人喜氣洋洋的吃完團(tuán)年飯后债沮,大家各有所思,心有所屬本鸣。 要不一如既往的坐在電視機(jī)的...
    木舟閱讀 227評(píng)論 1 4