包中只有一个类有代码味道吗?

时间:2010-09-20 09:12:10

标签: java oop packages

拥有一个只包含一个类的包是不是一种坏习惯?将单个类移动到包含其他随机有用类的util包会更有意义吗?

7 个答案:

答案 0 :(得分:16)

  

让一个只包含一个类的包是不好的做法?

不一定。这可能是某人对分类事物痴迷的一种表现。另一方面,它可能只是在一个不寻常的情况下适用的合理的一般分类方案的逻辑结果。

后者的一个示例可能是您拥有通用API以及该API的多个实现,其中每个实现由多个类组成。但其中一个实现(让我们称之为Null实现)只包含一个类。

真正的考验是包装结构是否符合其目的:

  • 是否更容易找到图书馆类?

  • 包是否按应用程序逻辑模块结构的方式组织应用程序类?

  • 结构是否允许您有效地利用“包私有”可见性?

  

将单个类移动到包含其他随机有用类的util包更合理吗?

不一定。如果该类只是另一个“随机有用”的叶类,那么移动它就是一个很好的例子。另一方面,如果它具有特定的功能而不打算一般使用,那么最好将它留在原地。

最好不要过于沉迷于创建优雅的包层次结构,或者当它们变得不如您最初想象的那样优雅(或有用)时重新调整它们。通常有更重要的事情要做,比如实现功能,编写测试,编写文档等等。

答案 1 :(得分:6)

包用于将类似的类放在一起,
在你的系统中,如果没有类似的类,那么显然你可以把它。

答案 2 :(得分:6)

  

让一个只包含一个类的包是不好的做法?

不一定。包用于将逻辑相关的实体组合在一起。它不会阻止您在包中只有一个这样的实体。

  

将单个类移动到包含其他随机有用类的util包会更有意义吗?

不是我,原因有两个:

  1. Util具有特定含义。出于孤独的原因将任意实体移动到util将是滥用工具的边缘情况。
  2. 这是过早的组织。使用Java,IDE支持非常丰富,只需点击几下即可轻松有效地重新组织。稍等片刻,看看您的项目如何发展,然后接听电话。

答案 3 :(得分:2)

静态util类有不同的stategies。我用这个:

  • 如果你的util类是通用的(String utils,DB utils等),我把它放在一个“util”包中,用于所有的应用程序。
  • 如果util类特定于域,我按惯例将其称为“DomainHelper”,并将其放在域包中,与域类处于同一级别。

答案 4 :(得分:1)

,这是一个明确的代码味道。

这并不意味着它一定是错的,但应该有一个很好的理由在一个包中单独的一个类。

我见过的单个类包的大多数实例都是错误的。

包应该实现功能。仅使用单个类实现功能的情况很少见。

答案 5 :(得分:0)

在一个包中创建一个单独的类并不是“坏”,创建一个新的包来组合多个相关的类,如果你希望将来有更多的相关类到你当前单个逻辑上不相关的类来避免重构。将所有随机实用程序类型类移动到单个包中是很多地方常见的做法。这是一个真正的选择问题。

答案 6 :(得分:0)

我想这取决于。在包含一个类的包中是非常罕见的,因为除了上面列出的答案之外,包还用于创建分层系统。只有一个类的包表示系统的分解没有浮出系统中的某些对象。所以,是的,我会仔细研究这个包,并质疑目的是什么。

最好不要在Util包中精确地粘贴随机内容,因为上面提到的原因。您应该问问自己,在将它放在那里之前,您是否会考虑将Med用于您的课程。当Util变大时,开始很难找到一个正在寻找的Utility。