Kotlin 學習筆記(二) 編碼規範和匯入包
阿新 • • 發佈:2019-01-10
編碼規範
無衝突的地方預設使用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 關鍵字匯入。