Kotlin研发第三弹——编码风格

编码风格

  • 编码规范
    • 命名风格
    • 冒号
    • lambdas
    • 类声明格式
    • Unit
    • 函数vs属性

编码风格

命名风格

—使用骆驼命名法(在命名中避免下划线)

—类型名称首字母大写

—方法和属性首字母小写

—缩进用四个空格

—public 方法要写说明文档,这样它就可以出现在 Kotllin Doc 中

冒号

在冒号区分类型和父类型中要有空格,在实例和类型中间是没有空格的

//对于泛型信息的泛型函数的适宜形式
interface Bar

interface FooTestDo<out t : Any> : Bar {
    fun fooTest(a: Int): t
}

Lambdas

在 lambda 表达式中,应该在花括号左右以及分隔参数与代码体的箭头左右留空格。 如果一个调用接受单个 lambda 表达式,应该尽可能将其放在圆括号外边传入。

list.filter { it > 10 }

如果为 lambda 表达式分配一个标签,那么不要在该标签与左花括号之间留空格:

fun foo() {
    ints.forEach lit@{
        // ……
    }
}

在多行的 lambda 表达式中声明参数名时,将参数名放在第一行,后跟箭头与换行符:

appendCommaSeparated(properties) { prop ->
    val propertyValue = prop.get(obj)  // ……
}

如果参数列表太长而无法放在一行上,请将箭头放在单独一行:

foo {
   context: Context,
   environment: Env
   ->
   context.configureEnv(environment)
}

类声明的格式

参数比较少的类可以用一行标识

//两种写法
class Person {
        var id: Int = 0
        var name: String = ""
}

class Person1(var id: Int, var name: String)

如果具有较多参数的类应该格式化每个构造函数都位于与缩进的单独行中。此外,结束括号应该在新行上。

如果我们使用继承,那么超类构造函数调用或实现的接口列表应该位于与括号相同的行中

open class PersonFather(open var id: Int, open var name: String)
class PersonTest(override var id: Int,
                 override var name: String = "",
                 var surname: String = "") : PersonFather(id, name) {

}

对于多个接口,应该首先定位超类构造函数调用,然后每个接口应该位于不同行中

interface PersonUncle

open class PersonFather(open var id: Int, open var name: String)

class PersonTest(override var id: Int,
                 override var name: String = "",
                 var surname: String = "") : PersonFather(id, name), PersonUncle

但是实际输入过程中不遵循也可以,而且自动整理代码也没有提示

Unit

如果函数返回Unit,返回类型应该省略:

fun Test(){
    //Unit 被省略
}

函数 vs 属性

在某些情况下,不带参数的函数可与只读属性互换。 虽然语义相似,但是在某种程度上有一些风格上的约定。

底层算法优先使用属性而不是函数:

  • 不会抛异常
  • 复杂度为O(1)
  • 计算开销小(或者在首次运行时缓存)
  • 如果对象状态没有改变,那么多次调用都会返回相同结果

跳转上一章 Kotlin研发第二弹——习惯用语

跳转下一章 Kotlin研发第四弹——基础类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值