对于仅包含函数/扩展方法的文件,是否存在建议的命名约定?

时间:2015-11-10 17:45:28

标签: naming kotlin

在Java中,它很简单:类型的文件名是类型的名称加上.java后缀。

在Kotlin中,您可以编写不包含类的文件。是否有任何惯例来命名它们?

另外,您如何为这些功能命名单元测试类?

3 个答案:

答案 0 :(得分:13)

StringExt.kt表示扩展功能为String的文件。

CollectionExt.kt用于集合扩展功能。

答案 1 :(得分:2)

我喜欢WangJie的建议,在文件名中添加一个Ext后缀以表明它是一个包含扩展名的文件。 (我个人将添加Extensions而不是Ext,但原则上它与WangJie的建议相同。)

我通过浏览Kotlin库中的文件可以看到,有一些约定可以将要添加扩展名的类名或类类型复数,例如Arrays.ktCollections.ktMaps.ktMutableCollections.ktStrings.ktCoding Conventions文档也暗指这一点。特别查看Source file names部分。

答案 2 :(得分:0)

对于仅具有扩展功能的文件,根据文档中的Source files organization部分,您不应创建以下文件:

  

请勿仅为了保留“ Foo的所有扩展名”而创建文件。

相反,您应该将扩展与扩展的类放在一起,或者放在扩展的客户端中。 我个人认为,该指南忽略了一个非常基本的用例:扩展函数,用于不属于您的多个客户端的类。还有一些扩展函数,它们依赖于您不想在扩展类所在的模块中引入的类。

在这种情况下,最好给出一个有意义的名称而不是json.courses.results(如果所有这些扩展功能都有共同的目的)。如果没有,则将它们全部保留在同一个文件中可能没有任何意义(请参考this准则,其中指出:“如果文件包含多个类或仅顶层声明,选择一个描述文件包含内容的名称,然后相应地命名该文件。” )。