Taiwan Kotlin User Group 的網站,在台灣推廣 Kotlin 程式語言,舉辦相關活動。如果對 Kotlin 有興趣,想要多瞭解一些,歡迎來我們的社群一起聚會!
套件(package)命名使用小寫
不使用底線(org.example.project)。
通常不鼓勵在命名內使用超過一個單字
如果必須使用的話,可以直接連在一起
或使用駝峰式命名(org.example.myProject)。
類別(class)或物件(object)命名
使用大寫開頭的駝峰式命名:
open class DeclarationProcessor { /*...*/ }
object EmptyDeclarationProcessor : DeclarationProcessor() { /*...*/ }
函數、屬性、本地變數的命名
使用小寫開頭的駝峰式命名,不使用底線:
fun processDeclarations() { /*...*/ }
var declarationCount = 1
例外:建立實體用的工廠函數(factory function)
可以直接使用抽象回傳型態
作為函數名稱:
interface Foo { /*...*/ }
class FooImpl : Foo { /*...*/ }
fun Foo(): Foo { return FooImpl() }
在測試內,並且僅可以在測試內
可以使用包含空格的命名
並以「`」符號包圍函數名稱
注意:這種命名方式在 Android 運行上不支援
測試程式碼也允許函數名稱內使用底線
class MyTestCase {
@Test fun `ensure everything works`() { /*...*/ }
@Test fun ensureEverythingWorks_onAndroid() { /*...*/ }
}
常數,也就是以 const 標記的屬性
或者包含不可更動資料,最頂層的屬性或物件
應使用全大寫,以底線分隔的命名方式(screaming snake case):
const val MAX_COUNT = 8
val USER_NAME_FIELD = "UserName"
Names of top-level or object properties which hold objects with behavior or mutable data
應使用小寫開頭的駝峰式命名:
val mutableCollection: MutableSet<String> = HashSet()
屬性用來儲存針對單例物件的參照時
可以使用 object 宣告的命名方式:
val PersonComparator: Comparator<Person> = /*...*/
列舉(enum)常數的命名
依據使用場景
可使用使用全大寫,以底線分隔的命名方式(screaming snake case):
enum class Color { RED, GREEN }`
或者使用大寫開頭的駝峰式命名:
enum class Color { Red, Green }`
如果類別內有兩個屬性
兩個屬性基本相同
一個來自外部傳入
另一個則是本地的私有屬性
可以在本地的私有屬性名稱前加上底線標記:
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}
類別的名稱一般是名詞或名詞子句
解釋這個類別是什麼:
ListPersonReader方法(method)的名稱一般是動詞或動詞子句
解釋這個方法做什麼:
closereadPersons方法的命名應該要能看出是否會更動傳入的物件
比方說 sort 會將傳入的集合排序好
sorted 則應該不更動原有集合
回傳一個排序好的集合複本
命名應該要能清楚地看出目的
所以最好避免無意義的單字
比方說 Do,Wrapper
使用縮寫時
如果縮寫是兩個字母
應使用全大寫
比方說 IOStream
如果縮寫超過兩個字母
則不應使用全大寫
比方說 XmlFormatter,HttpInputStream
更多命名範例
請參考 不好的 Kotlin 專案命名範例 進行對比
想看更多範例嗎?
可以看看
或加入 kotlin.tips 的 Kotlin 讀書會 !