本文主要针对一些常用的编码规范进行总结,后续还会不断补充,整体跟java除了某些语法不一致,大体格式都是一样的。
编码规范
源代码组织
目录结构
- 纯kotlin项目中,目录结构中可以省略公共根包的包结构
- 对于JVM平台的项目,Kotlin文件应该与java文件遵循同意规则,即根据文件的包结构存储在对应的目录结构中
源文件名称
文件只有一个类(可以有也可以没有顶层声明)
文件名应该与类名保持一致
文件包含多个类,或者没有类只有顶层声明
文件名为可以描述文件中的功能业务内容,命名规则采取大驼峰的规则(如TeacherList.kt)
源文件组织
- 鼓励多个声明(类,顶层函数或者属性)放在同一kotlin源文件中,只要它们语义密切关联即可,但是文件不要太大(不超过几百行)
- 为类定义的扩展函数和与所有客户均相关的扩展函数,建议放在类定义的地方,作为类的一部分
- 与特定客户相关的扩展函数,放在特定客户代码之后
- 不要为了某个类或者某个函数的所有扩展函数而单独创建文件
类布局
类中的内容通常排序
- 属性声明与初始化块
- 次构造函数
- 方法声明
- 相关方法均放在一起,方便阅读。如funA()中调用了funB(),那么funA和funB()就需要放在一起
- 伴生对象
嵌套类
- 放在紧挨着调用嵌套类的地方
- 如果只有外部类调用了嵌套类(当前类并没有调用),那么我们尽量把它们放在类末尾,在伴生对象之后
接口实现布局
- 实现成员的顺序与接口中定义成员的顺序一致(如果成员实现需要额外的私有方法,私有方法紧跟该实现成员之后)
重载布局
- 类中的重载要放在一起
命名规则
包名
- 小写且不适用下划线。 ex:com.example.project
- 不建议适用多个单词组成的名称,如果需要则使用小驼峰形式。 ex:com.example.myProject
类名
- 大驼峰形式。
class TestClass {}
函数及变量名
- 小驼峰形式。
fun testFuction() {}
var teacherName
val teacherNumber
修饰符
当存在多个修饰符的时候,需要遵循以下顺序:
public / protected / private / internal
expect / actua
final / open / abstract / sealed / const
external
override
lateinit
tailrec
vararg
suspend
inner
enum / annotation / fun // 在fun interface
中是修饰符
companion
inline
infix
operator
data