这章主要讲当前 kotlin 的一些编码习惯。

命名

如无疑问,kotlin 的命名风格与以下的java风格一样:

--驼峰命名法(不要使用下划线)

--类名首字母大写

--方法和属性名首字母小写

--四个空格缩进

--公共方法要写文档注释

冒号

冒号分开类与父类时,要在冒号前面加空格,而分开类与实例时则不需要加。

1 interface Foo<out T : Any> : Bar {
2 fun foo(a: Int): T
3 }

Lambdas

lambda 表达式中,花括号前后要用空格隔开,而且,箭头前后也要有空格,以便区分参数与函数体。

list.filter { it > 10 }.map { element -> element * 2 }

在单行 lambda 里,推荐在参数里用 it 关键字代替参数声明。而嵌套的 lambda 里参数就需要声明才能用。

Class 头部格式化

参数较少的 class 可以写成一行:

class Person(id: Int, name: String)

参数较多,头部较长的 class 可以将每个参数格式化成缩进式的一行一个,小括号可以另起一行。不过,如果我们在用继承,那么父类的构造函数调用里,或者实现的接口的list里,参数需要在括号内保持在一行:

1 class Person(
2 id: Int,
3 name: String,
4 surname: String
5 ) : Human(id, name) {
6 // ...
7 }

至于多接口,超级父类构造函数的调用必须放在前面,其他的接口要另起一行:

1 class Person(
2 id: Int,
3 name: String,
4 surname: String
5 ) : Human(id, name),
6 KotlinMaker {
7 // ...
8 }

构造函数的缩进可以是常规的缩进,也可以是持续缩进(常规缩进的double).

Unit

如果一个函数返回类型是 Unit ,那么它的返回类型可以省略,不指定:

 fun foo() { // ": Unit" 在这里被省略了

 }

Functions vs Properties

在某些情况下,无参数的方法可以跟只读属性互换。尽管语义类似,在互换时还是有一些语法风格与使用习惯上的约定,在满足以下算法规则下时,支持方法与属性互换:

--无抛出异常

--复杂度为0(1)

--简单运算

--返回结果相同

转载请注明原文地址:http://www.cnblogs.com/joejs/p/6889993.html

kotlin 语言入门指南(三)--编码习惯的更多相关文章

  1. kotlin 语言入门指南(二)--代码风格

    语言风格 这里整理了 kotlin 惯用的代码风格,如果你有喜爱的代码风格,可以在 github 上给 kotlin 提 pull request . 创建DTOs(POJSs/POCOs) 文件: ...

  2. kotlin 语言入门指南一

    基于官网的Getting Start部分,翻译如下: 基础语法 定义一个包 包的声明必须放在文件头部: package my.demo import java.util.* // ... 不需要加上p ...

  3. kotlin 语言入门指南(一)--基础语法

    基于官网的Getting Start的基础语法教程部分,一共三节,这篇是第一节,翻译如下: 基础语法 定义一个包 包的声明必须放在文件头部: package my.demo import java.u ...

  4. Go 语言入门(三)并发

    写在前面 在学习 Go 语言之前,我自己是有一定的 Java 和 C++ 基础的,这篇文章主要是基于A tour of Go编写的,主要是希望记录一下自己的学习历程,加深自己的理解 Go 语言入门(三 ...

  5. ReadHub项目Kotlin版开发指南(三、MVP架构)

    ReadHub项目Kotlin版转换指南(一.环境搭建) ReadHub项目Kotlin版转换指南(二.数据库和网络请求) ReadHub项目Kotlin版转换指南(三.MVP架构) Android ...

  6. 浙工大C语言入门指南 (仅供参考)

    C语言书籍推荐 浙工大图书馆中,计算机的书都集中在三楼TP区.我个人推荐下面这么几本书. <Head First C>.Head First系列的书质量基本都很高.该书有很多插图,总体上就 ...

  7. Drools规则引擎入门指南(三)——使用Docker部署Workbench

    其实本来我也是打算使用Tomcat来部署Workbench的,但是在网上看了几篇文章,超级繁琐的配置.各种版本.实在看不下去了索性就直接使用Docker来部署了.本次部署的版本是最新稳定版,对应dro ...

  8. require.js入门指南(三)

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  9. Go语言入门教程(十)之函数

    Hello 各位小伙伴大家好,我是小栈君,假期一眨眼就过去了.不知道大家玩的是否开心呢? 上次我们讲到了关于Go语言的流程控制,小栈君也希望小伙伴跟着小栈君一步一个脚印的敲一下代码,相互进步.本期我们 ...

随机推荐

  1. [SinGuLaRiTy] COCI 2011~2012 #2

    [SinGuLaRiTy-1008] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 测试题目 对于所有的题目:Time Limit:1s   ...

  2. 手机自动化测试:appium源码分析之bootstrap十一

    手机自动化测试:appium源码分析之bootstrap十一   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...

  3. python 日期 & 时间

    1. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 2. 时间间隔是以秒为单位的浮点小数. 3. 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长 ...

  4. ECP系统J2EE架构开发平台

    一 体系结构 ECP平台是一个基于J2EE架构设计的大型分布式企业协同管理平台,通过采用成熟的J2EE的多层企业架构体系,充分保证了系统的健壮性.开放性和扩展性.可选择部署于多种系统环境,满足不同类型 ...

  5. 对MySQL数据量日益增长产生的一点小想法

    最近一直在想一个问题 MySQL数据量日益庞大,目前单表总记录数有 300W+,导致sql语句执行的速度变慢,如果一直这样增长下去,总有一天会爆炸的.怎么办??怎么办?? 第一:想到的必然是 添加索引 ...

  6. Ubuntu 重装 mysql

    我另篇blog有提到修改完my.cnf文件后mysql server重新启动失败,就是说mysql server启动不起来了,于是我就想到重装再试试,没想到就好了. 重装mysql之前需要卸载干净,删 ...

  7. 学习vue 20天,我写了点东西

    往昔 最初团队里使用Angularjs进行开发,刚开始还好,到了项目后期越发感觉Angularjs太重了,以至于后来重构项目时,毅然放弃Angularjs,投入了Vue的怀抱.除了组建团队时,是我搭建 ...

  8. [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  9. cocos2d-x-Json/XML文件

    数据存储几种方式 1. 数据库 2. 文件 3. 内存 这里介绍Json格式与XML格式的文件存储 常用的文件存储数据的格式 1. Json格式 2. XML格式 Json适合存储小数据,XML适合存 ...

  10. JavaScript 中有关Array操作的一些函数

    JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 0.222, 'Hi', null, ...