在Java中,很简单:类型的文件名就是类型名称加上.java
后缀。
在Kotlin中,你可以编写不含类的文件。那么它们的命名规则是什么?
另外,你会如何为这些函数命名单元测试类?
StringExt.kt
是带有String
扩展函数的文件的名称。
CollectionExt.kt
是用于集合扩展函数的文件名称。
我喜欢王杰的建议,即在文件名后缀中添加Ext
以表明该文件包含扩展内容。(个人而言,我会使用Extensions
代替Ext
,但原则上与王杰所建议的相同。)
通过浏览Kotlin库中的文件,我发现有一种约定,即将添加扩展的类或类类型的名称变成复数形式,例如Arrays.kt,Collections.kt,Maps.kt,MutableCollections.kt,Strings.kt。 Coding conventions文档中的源文件名称部分也提到了这一点。
关于仅包含扩展函数的文件,根据文档中的源文件组织部分,您不应创建这样的文件:
避免创建仅用于保存某个类的所有扩展的文件。
相反,您应该将扩展与它们扩展的类放在一起或者放在客户端中。我个人认为,这个指南忽略了一个非常基本的用例:对于你不拥有的类的扩展函数,且有多个客户端。还有那些依赖于你不想引入到扩展类所在模块中的类的扩展函数。
在这种情况下,最好给它们一个有意义的名称,而不是FooExt.kt
(如果所有这些扩展函数都有共同的目的)。如果没有,将它们全部放在同一个文件中可能没有意义。我指的是源文件名称指南中的规定:
如果一个文件包含多个类或仅包含顶级声明,请选择描述文件内容的名称,并相应地命名文件。
我的做法是将所有扩展方法放入名为extensions
的包中,并将这些方法放入文件中,文件名按照它们扩展的类进行命名,例如Int.kt
或String.kt
。