1

我们正在做一个关于 OSGi 的大项目并添加一些公共模块。有一些关于命名工件的讨论。

因此,命名模块时的一种可能性是:

cmns-definitions(对于常见的定义),另一个是cmns-definition,还有一个是cmns-def。这对包名也有一些影响。现在是 xx.xxx.xxx.xxx.xxx.commons.definitions,如果更改cmns-defxx.xxx.xxx.xxx.xxx.commons.def

在这个包中将有像枚举这样的类和其他在整个系统中使用的定义。

我个人倾向于,cmns-definitions因为包内不仅有 1 个定义。其他人指出,java.util例如,那里不仅有 1 个实用程序。不过,对我来说java.util是一个缩写。它可以表示java 实用程序java 实用程序。同样的事情发生在commons-lang.

你会如何命名这个包?为什么会选择这个名字?

  1. cmns-definitions
  2. cmns-definition
  3. 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 -> 几个数据库连接池的包

4

3 回答 3

2

“这只是一个名字……”

在我漫长的职业生涯中,我发现这些名字可以极大地提高生产力。我认为,如果您使用定义定义定义,只要您保持一致并在名称中使用易于记忆且可用于自动化流程的模式,我认为这不会有什么不同。基于一致命名方案的构建比使用临时且没有可识别模式的“漂亮的人类显示”名称的构建更容易使用。

如果您使用模式,名称往往会变短。现在,使用这些名字的人通常会花很多时间在他们身上。所以它们的可读性并不像它们的助记符那么重要。事实证明,3 或 4 个字符的缩写令人惊讶地强大。原因之一是它们运作良好,因为只有一种可能的缩写,而如果你走得更久,就会有很多候选者。

无论如何,最重要的部分是整体一致性。祝你好运。

于 2012-10-04T07:26:35.863 回答
0

definitions(or defor definition) 是一个坏名字,因为它对读者没有任何语义。你在一个面向对象的世界(我想)——试着遵循它的约定和原则。Maven 中的模块应该以它们包含的最大“抽象”命名。“定义”是一种形式,而不是一种意义。

您的问题类似于:“哪个类名更好FileUtilitiesFileUtils”。答:没有。

于 2012-10-03T14:48:13.417 回答
0

基本上你对定义和异常所做的就是为你的其他模块提供一种 API。所以我建议结合定义、异常并为其添加接口。然后将其全部称为 cmns-api 是有意义的。我通常更喜欢单数名称,因为它们更短,但您可以自由决定,因为它只是一个名称。

于 2012-10-04T06:15:16.067 回答