1. 程式人生 > >Kotlin 學習筆記(二) 編碼規範和匯入包

Kotlin 學習筆記(二) 編碼規範和匯入包

編碼規範

無衝突的地方預設使用Java的編碼風格

  • 使用駝峰法命名(並避免命名含有下劃線)

  • 型別名以大寫字母開頭

  • 方法和屬性以小寫字母開頭

  • 使用 4 個空格縮排

  • 公有函式應撰寫函式文件,這樣這些文件才會出現在 Kotlin Doc 中

冒號

型別和超型別之間的冒號前要有一個空格,而例項和型別之間的冒號前不要有空格:


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

Lambda表示式

在lambda表示式中, 大括號左右要加空格,分隔引數與程式碼體的箭頭左右也要加空格 。lambda表達應儘可能不要寫在圓括號中

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

在非巢狀的短lambda表示式中,最好使用約定俗成的預設引數 it 來替代顯式宣告引數名 。在巢狀的有引數的lambda表示式中,引數應該總是顯式宣告。

Unit

如果函式返回 Unit 型別,該返回型別應該省略:

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

}

函式還是屬性

很多場合無參的函式可與只讀屬性互換。 儘管語義相近,也有一些取捨的風格約定。

底層演算法優先使用屬性而不是函式:

  • 不會拋異常
  • O(1) 複雜度
  • 計算廉價(或快取第一次執行)
  • 不同調用返回相同結果

類頭的格式

放在類相關的內容中

包和匯入

原始檔通常以包宣告開頭:

package foo.bar

fun baz() {}

class Goo {}

// ……

原始檔所有內容(無論是類還是函式)都包含在宣告的包內。 所以上例中 baz() 的全名是 foo.bar.baz、Goo 的全名是 foo.bar.Goo。

如果沒有指明包,該檔案的內容屬於無名字的預設包。

匯入

除了預設匯入之外,每個檔案可以包含它自己的匯入指令。 匯入語法在語法中講述。

可以匯入一個單獨的名字,如.

import foo.Bar // 現在 Bar 可以不用限定符訪問

也可以匯入一個作用域下的所有內容(包、類、物件等):

import foo.* // “foo”中的一切都可訪問

如果出現名字衝突,可以使用 as 關鍵字在本地重新命名衝突項來消歧義:

import foo.Bar // Bar 可訪問
import bar.Bar as bBar // bBar 代表“bar.Bar”

關鍵字 import 並不僅限於匯入類;也可用它來匯入其他宣告

  • 頂層函式及屬性
  • 在物件宣告中宣告的函式和屬性;
  • 列舉常量

與 Java 不同,Kotlin 沒有單獨的 “import static” 語法; 所有這些宣告都用 import 關鍵字匯入。