我们正在做一个关于 OSGi 的大项目并添加一些公共模块。有一些关于命名工件的讨论。
因此,命名模块时的一种可能性是:
cmns-definitions
(对于常见的定义),另一个是cmns-definition
,还有一个是cmns-def
。这对包名也有一些影响。现在是
xx.xxx.xxx.xxx.xxx.commons.definitions
,如果更改cmns-def
为xx.xxx.xxx.xxx.xxx.commons.def
。
在这个包中将有像枚举这样的类和其他在整个系统中使用的定义。
我个人倾向于,cmns-definitions
因为包内不仅有 1 个定义。其他人指出,java.util
例如,那里不仅有 1 个实用程序。不过,对我来说java.util
是一个缩写。它可以表示java 实用程序或java 实用程序。同样的事情发生在commons-lang
.
你会如何命名这个包?为什么会选择这个名字?
cmns-definitions
cmns-definition
cmns-def
额外的问题:如何命名类似的东西cmns-exceptions
?我就是这样命名的。你会命名cmns-xcpt
吗?
编辑:
我对此提出自己的想法,希望得到证实或反驳。如果可以,请做。
根据我的想法,您命名某事物的背景原因是为了更容易理解其中的内容。或者,根据 Peter Kriens 的说法,让记忆变得容易,并能够通过模式自动化流程。两者都是有效的论据。
在模式方面,我的推理如下:
1)当一个实体出现并且在行业中众所周知时,请按照您的命名。
例如:“功能”就是一个例子。我们有一个名为 cmns-features 的模块。这是否意味着我们在这个模块上有很多功能?不,它的意思是“实现 Apache karaf 的“功能”文件的模块”。
“commons”是“commons”的一种实体化,在业界广为接受。这并不意味着“许多常见”。它的意思是“通用代码”。
例如,如果我将 extr-commons 视为模块名称,我知道它包含用于 extr 的公共代码(在本例中为提取)。
2)当模块内的多个类相互协作,为整体赋予一个独特的“一个和一个”含义时,使用单数形式命名。
大多数模块都包含在此处。如果我将某个东西命名为 cmns-persistence-jpa,我的意思是内部的任何类都相互协作以提供 cmns-persistence-api 的 jpa 实现。我不希望它里面有 2 个实现,但实际上有无数的类共同构成一个实现。对我来说一清二楚。不?
3) 当一组类的唯一目的是通过亲和力聚集类,但这些类没有毫无目的地合作时,使用复数。
这是 cmns-definitions (整个系统使用的枚举)的示例。
或者,使用缩写可以规避问题,例如 cmns-def 也可以由人类读者“解释为扩展”为 cmns-definition。许多人还使用“xxxx-util”,意思是 xxxx-utilities。
还有第三种选择可用于将事物打包在一起,使用本身就意味着复数的名称。想到了“api”这个词,但是任何将某物复数的词都可以,比如“pack”。
对这些情况 (3) 的支持是众所周知的模块,例如 commons-collections(使用复数)或 commons-dbcp(使用缩写)或 commons-lang(再次缩写)以及任何使用 api 通过亲和力将类打包在一起的模块。
来自 apache:
commons-collections -> 许多强大的数据结构可加速最重要的 Java 应用程序的开发
commons-lang -> java.lang API 的大量帮助实用程序
commons-dbcp -> 几个数据库连接池的包