Kotlin 样式
2020-11-25 本文已影响0人
kevinsEegets
格式设置
大括号
表达式
-
1、没有
elese if/else
分支且适合放在一行的if
语句不需要大括号if (string.isEmpty()) return
-
2、函数主体为空或仅包含一个语句要使用大括号
if (string.isEmpty()) return // WRONG! if (string.isEmpty()) { return // Okay }
-
3、当整个表达式适合放在一行时,表达式
if/else
条件语句可以省略大括号val value = if (string.isEmpty()) 0 else 1 // Okay val value = if (string.isEmpty()) { // Okay 0 } else { 1 } val value = if (string.isEmpty()) // WRONG! 0 else 1
函数
当函数不适合放在一行时,应让每个参数独占一行,如下代码:
fun <T> Iterable<T>.joinToString(
separator: CharSequence = ", ",
prefix: CharSequence = "",
postfix: CharSequence = ""
): String {
// …一个空白行(即,仅包含对齐的前导星号 (*) 的行)会出现在段落之间,以及成组的块标记(如果存在)前面。
}
属性
一行代码长度限制100个字符,超过此限制需要换行 当属性初始化不适合放在一行时,应在等号(=)后换行,并使用缩进,如下代码:
private val defaultCharset: Charset? =
EncodingRegistry.getInstance().getDefaultCharsetForPropertiesFiles(file)
超过最大字符换行
一行代码长度限制100个字符,超过此限制需要换行
注释
应将成员或类型注释放在单独的行上,让其紧接在标注的构造前面。
@Retention(SOURCE)@Target(FUNCTION, PROPERTY_SETTER, FIELD)annotation class Global
可以将不带参数的注释放在一行上。
@JvmField @Volatilevar disposable: Disposable? = null
如果只存在一个不带参数的注释,可以将其与声明放在同一行上。
@Volatile var disposable: Disposable? = null@Test fun selectAll() { // …}
@[...]
语法只能用于明确的使用处目标,并且只能用于将没有参数的两个或更多注释组合在一行中。
@field:[JvmStatic Volatile]var disposable: Disposable? = null一个空白行(即,仅包含对齐的前导星号 (*) 的行)会出现在段落之间,以及成组的块标记(如果存在)前面。
命名规则
常量命名
标有`const`的属性或者保存不可变数据的没有自定义`get`的属性应该用大写、下划线分割命名:
const val MAX_COUNT = 8
val USER_NAME = "UserName"
可变对象使用驼峰命名:
val mutableSet: MutableSet<String> = HashSet()
枚举常量使用大写、下划线分割或驼峰命名
enum class Color { RED, GREEN }
一个空白行(即,仅包含对齐的前导星号 (*) 的行)会出现在段落之间,以及成组的块标记(如果存在)前面。属性的命名遵循单词拼接方式,错误的单词拼写AndroidStudio会进行提示
后备属性
需要后备属性时,其名称应与实际属性的名称完全匹配,只不过带有下划线前缀。如下代码:
private var _table: Map? = null
val table: Map
get() {
if (_table == null) {
_table = HashMap()
}
return _table ?: throw AssertionError()
}
reference:
https://cloud.tencent.com/developer/article/1473220
https://developer.android.com/kotlin/style-guide#naming