當你寫code久了,會發現到底該怎麼進步呢? 其中一點就是遵守官方的Coding Style,如此這般,未來你在跟其他團隊或者跟國際團隊在合作的時候,你們才比較有統一的撰寫風格,通常大一點的公司也許都會有自己的Coding style guide line,但學習或遵循官方的Coding Style會是一個最快的方式,大致上可以看到有Google的與Kotlin官方的兩個版本,今天我們先用Android官方的版本來挑幾個例子來說明一下,由於內容非常長但很豐富值得定期來update,個人是非常建議不定時都要來看一下
https://developer.android.com/kotlin/style-guide
在變數命名中是一個很基本的,首字大寫,大多應該都會用名詞作為開頭
If a source file contains only a single top-level class, the file name should reflect the case-sensitive name plus the .kt extension. Otherwise, if a source file contains multiple top-level declarations, choose a name that describes the contents of the file, apply PascalCase (camelCase is acceptable if the filename is plural), and append the .kt extension.
並且可以看到官方說到,會使用駝峰式命名為主
https://developer.android.com/kotlin/style-guide#formatting
https://developer.android.com/kotlin/style-guide#functions
當function參數過多無法塞入所謂的一行中,建議可以在每一個參數宣告處換行,譬如這樣,一方面也可以很清楚的看到參數宣告
fun <T> Iterable<T>.joinToString(
separator: CharSequence = ", ",
prefix: CharSequence = "",
postfix: CharSequence = ""
): String {
// …
}
我們回頭來看如果不透過這樣的方式格式化的話會是這樣
fun <T> Iterable<T>.joinToString(separator: CharSequence = ", ",prefix: CharSequence = "",postfix: CharSequence = ""): String {
// …
}
可以看到這樣比較雜亂不好閱讀,增加程式碼閱讀性也是開發人員的職責之一,但這樣撰寫其實也是允許的,不過通常我個人也會建議超過一行時候都可以透過工具直接進行換行,在Android Studio中也可以輕鬆地透過IDE進行自動換行
TODO ..增加說明
https://developer.android.com/kotlin/style-guide#expression_functions
如果你的function不多行,像是這樣
override fun toString(): String {
return "Hey"
}
通常我個人也會建議讓他變成expression functions,也就是這樣
override fun toString(): String = "Hey"
不僅清楚,而且可以節省兩行,當程式碼多的時候,可以讓你的整個程式碼更乾淨一些
https://developer.android.com/kotlin/style-guide#properties
也就是變數宣告,如果當一行超過的時候,建議可以再 =
後面進行換行
private val defaultCharset: Charset? = EncodingRegistry.getInstance().getDefaultCharsetForPropertiesFiles(file)
變成
private val defaultCharset: Charset? =
EncodingRegistry.getInstance().getDefaultCharsetForPropertiesFiles(file)
如果你後面透過所謂的custom getter / setter ,建議會透過縮排的方式進行格式化
var directory: File? = null
set(value) {
// …
}
但如果你式read-only的 properites的話,就可以儘在一行中進行顯示
val defaultExtension: String get() = "kt"
https://developer.android.com/kotlin/style-guide#whitespace
Separating any reserved word, such as if, for, or catch from an open parenthesis (() that follows it on that line.
對於保留字的後面(譬如if
/ for
等等),都建議要空上一格,譬如下面這樣,if
後面可以黏著(
,但官方會建議你要進行空格,又或者如果你們團隊的習慣就是會黏著寫,那你所有的程式碼都需要遵循同樣的規則,但官方這邊會建議保留字
都要進行空格
遵循一樣的撰寫風格與排版,這樣程式碼看起來才會比較一致,
Separating any reserved word, such as else or catch, from a closing curly brace (}) that precedes it on that line.
然而如果你的保留字
遇到括號
,同樣也要保持一個空白的規則,目前就先更新到這邊,未來有機會再持續針對其他規則說明