kotlin 基础编码规范

这篇具有很好参考价值的文章主要介绍了kotlin 基础编码规范。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Kotlin基础编码规范
源代码组织
目录结构
在纯 Kotlin 项目中,推荐的目录结构遵循省略了公共根包的包结构。例如,如果项目中的所有代码都位于 org.example.kotlin 包及其子包中,那么 org.example.kotlin 包的文件应该直接放在源代码根目录下,而 org.example.kotlin.network.socket 中的文件应该放在源代码根目录下的 network/socket 子目录中。

对于 JVM 平台:Kotlin 源文件应当与 Java 源文件位于同一源文件根目录下, 并遵循相同的目录结构(每个文件应存储在与其 package 语句对应的目录中。

源文件名称
如果 Kotlin 文件包含单个类(以及可能相关的顶层声明),那么文件名应该与该类的名称相同,并追加 .kt 扩展名。如果文件包含多个类或只包含顶层声明, 那么选择一个描述该文件所包含内容的名称,并以此命名该文件。 使用首字母大写的驼峰风格(例如 ProcessDeclarations.kt)。

文件的名称应该描述文件中代码的作用。因此,应避免在文件名中使用诸如“Util”之类的无意义词语。

源文件组织
鼓励多个声明(类、顶级函数或者属性)放在同一个 Kotlin 源文件中, 只要这些声明在语义上彼此紧密关联并且文件保持合理大小 (不超过几百行)。

特别是在为类定义与类的所有客户都相关的扩展函数时, 请将它们放在与类自身定义相同的地方。而在定义仅对指定客户有意义的扩展函数时,请将它们放在紧挨该客户代码之后。不要只是为了保存 “Foo 的所有扩展函数”而创建文件。

类布局
通常,一个类的内容按以下顺序排列:

属性声明与初始化块
次构造函数
方法声明
伴生对象
不要按字母顺序或者可见性对方法声明排序,也不要将常规方法与扩展方法分开。而是要把相关的东西放在一起,这样从上到下阅读类的人就能够跟进所发生事情的逻辑。选择一个顺序(高级别优先,或者相反)并坚持下去。

将嵌套类放在紧挨使用这些类的代码之后。如果打算在外部使用嵌套类,而且类中并没有引用这些类,那么把它们放到末尾,在伴生对象之后。

接口实现布局
在实现一个接口时,实现成员的顺序应该与该接口的成员顺序相同(如果需要, 还要插入用于实现的额外的私有方法)

重载布局
在类中总是将重载放在一起。

命名规则
在 Kotlin 中,包名与类名的命名规则非常简单:

包的名称总是小写且不使用下划线(org.example.project)。 通常不鼓励使用多个词的名称,但是如果确实需要使用多个词,可以将它们连接在一起或使用驼峰风格(org.example.myProject)。

类与对象的名称以大写字母开头并使用驼峰风格:


open class DeclarationProcessor { /*……*/ }

object EmptyDeclarationProcessor : DeclarationProcessor() { /*……*/ }
函数名
函数、属性与局部变量的名称以小写字母开头、使用驼峰风格而不使用下划线:


fun processDeclarations() { /*……*/ }
var declarationCount = 1
例外:用于创建类实例的工厂函数可以与要创建的类具有相同的名称:


abstract class Foo { /*……*/ }

class FooImpl : Foo { /*……*/ }

fun FooImpl(): Foo { return FooImpl() }
测试方法的名称
**当且仅当**在测试中,可以使用反引号括起来的带空格的方法名。 (请注意,Android 运行时目前不支持这样的方法名。)测试代码中也允许方法名使用下划线。


class MyTestCase {
     @Test fun `ensure everything works`() { /*...*/ }

     @Test fun ensureEverythingWorks_onAndroid() { /*...*/ }
}
属性名
常量名称(标有 const 的属性,或者保存不可变数据的没有自定义 get 函数的顶层/对象 val 属性)应该使用大写、下划线分隔的名称:


const val MAX_COUNT = 8
val USER_NAME_FIELD = "UserName"
保存带有行为的对象或者可变数据的顶层/对象属性的名称应该使用驼峰风格名称:


val mutableCollection: MutableSet<String> = HashSet()
保存单例对象引用的属性的名称可以使用与 object 声明相同的命名风格:


val PersonComparator: Comparator<Person> = /*...*/
对于枚举常量,可以使用大写、下划线分隔的名称 (enum class Color { RED, GREEN })也可使用首字母大写的常规驼峰名称,具体取决于用途。

幕后属性的名称
如果一个类有两个概念上相同的属性,一个是公共 API 的一部分,另一个是实现细节,那么使用下划线作为私有属性名称的前缀:


class C {
    private val _elementList = mutableListOf<Element>()

    val elementList: List<Element>
         get() = _elementList
}
选择好名称
类的名称通常是用来解释类*是*什么的名词或者名词短语:List、 PersonReader。

方法的名称通常是动词或动词短语,说明该方法*做*什么:close、 readPersons。 修改对象或者返回一个新对象的名称也应遵循建议。例如 sort 是对一个集合就地排序,而 sorted 是返回一个排序后的集合副本。

名称应该表明实体的目的是什么,所以最好避免在名称中使用无意义的单词 (Manage文章来源地址https://www.toymoban.com/news/detail-527497.html

到了这里,关于kotlin 基础编码规范的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编码规范之命名规范

    前言: textcolor{Green}{前言:} 前言: 💞这个专栏就专门来记录一下寒假参加的第五期字节跳动训练营 💞从这个专栏里面可以迅速获得Go的知识 今天的笔记是昨天的补充,对编码规范中的命名规范进行总结。主要包含 变量的命名规范 、 函数的命名规范 、 包的命名规范 。通

    2024年02月10日
    浏览(38)
  • JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范

    7、【强制】如果存储的字符串长度几乎相等,使用 char定长字符串类型 8、【强制】varchar是可变长字符串,不预先分配存储空间,长度不要超过 5000,如果存储长度大于此值,定义字段类型为 text,独立出来一张 表,用主键来对应,避免影响其它字段索引效率。 9、【强制】表

    2024年04月10日
    浏览(53)
  • Python的编码规范

    目录 1、每个 import 语句只导入一个模块,尽量避免一次导入多个模块, 2、不要在行尾添加分号,也不要用分号将两条命令放在同一行, 3、建议每行不超过 80 个字符, 4、使用必要的空行可以增加代码的可读性 5、通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都

    2024年02月08日
    浏览(42)
  • Kafka开发编码规范

    啥为编码规范? 编程规范也就是编写出简洁、可维护、可靠、可测试、高效、可移植的代码,提高产品代码的质量。 规范与规则的区别: • 规范是业内程序员统一形成的编码习惯,即你不遵循编程规范,但并不会影响你的代码‘跑’起来。 • 但规则不同,一但违反编程的

    2024年02月12日
    浏览(42)
  • C++编码规范解读

    好处:代码整体结构清晰、明了。java里强制如此。 比如:UrlEncoder FileParser 如: 有符号类型 无符号类型 描述 int8_t uint8_t 宽度恰为8的有/无符号整数类型 int16_t uint16_t 宽度恰为16的有/无符号整数类型 int32_t uint32_t 宽度恰为32的有/无符号整数类型 int64_t uint64_t 宽度恰为64的有/无

    2024年02月12日
    浏览(76)
  • MySQL编码规范

    1.【强制】禁止在数据库中存储明文密码,需把密码加密后存储 说明:对于加密操作建议由公司的中间件团队基于如mybatis的扩展,提供统一的加密算法及密钥管理,避免每个业务线单独开发一套,同时也与具体的业务进行了解耦 2.【强制】禁止在数据库中明文存储用户敏感信

    2024年02月10日
    浏览(33)
  • 【C&C++编码规范】

    目的 :加强编程人员在编程过程中的安全以上,建立编程人员的攻击者思维,养成安全编码的习惯,写出安全、可靠的代码。 安全编码基本思想 1.程序在处理外部数据时必须经过严格的合法性校验,编程人员在处理外部数据过程中必须时刻保持这种思维意识,不能做出任何

    2024年02月09日
    浏览(46)
  • Solidity编码规范

    避免使用 小写的L,大写的I,大写的O 应该避免在命名中单独出现,因为很容易产生混淆。 合约、库、事件、枚举及结构体命名——大驼峰 合约、库、事件及结构体命名应该使用单词首字母大写的方式。 比如:SimpleToken, SmartBank, CertificateHashRepository,Player。 函数、参数、

    2024年01月19日
    浏览(57)
  • 编码规范、Git分支整理

    包命名规范 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名kl(为公司名称,可以简写),三级包名pos(根据应用进行命名),四级包名activity或adapter等(模块名或层级名),根据实际情况也是可以用五级包名,六级包名。例如:com.kl.pos.activity | com.kl.p

    2024年02月09日
    浏览(51)
  • vue3 前端编码规范

    1. vscode 安装prettier 的 插件 2. 新建 .prettierrc 文件 1. 创建.eslintrc.js 1. commitlint (检测提交信息) 安装 创建 commitlint.config.js 2. husky (githook的工具) 安装依赖 启动hooks,生成.husky 文件夹 在package.json 中生成prepare指令(需要 npm ≥7.0 版本) 执行 prepare 指令 成功提示 添加commitl

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包