【问题标题】:How to organise classes, packages [closed]如何组织课程,包[关闭]
【发布时间】:2011-11-22 20:24:33
【问题描述】:

你如何决定一个包名应该是什么,什么类应该放在什么包中?

我正在做一个项目,我不断添加/删除类,但不确定是否需要一个新包,或者应该将它添加到我目前不知道的现有包中。

您在创建新包时是否遵循一套规则?

你怎么知道你是否没有复制包功能?这仅仅是因为对项目的熟悉程度。

任何指针表示赞赏。

【问题讨论】:

  • @Alex K:我不认为它是重复的。您指出的问题是关于包如何在 Java 中工作,而这个问题是关于如何更有效地定义包。

标签: java packages


【解决方案1】:

我不相信包装约定有任何硬性规定(尽管我可能是错的)。通常我把它分解成

com.mycompanyname 然后:

  • API
  • 控制器
  • 数据(用于模型)
  • 作业(用于 cron 作业)
  • 报告
  • servlet
  • 实用工具

如果我发现我有一个不适合其中任何一个的类,那么我会创建一个新包。

【讨论】:

  • 是的,我使用类似的东西。我发现这可以使代码井井有条,但有些人似乎认为这不是很好的做法。
【解决方案2】:

类应该做一件事 (Single Responsibility Principle)。

做相关事情的类应该放在同一个包中。如果您发现可以更紧密地关联包中的某些类,请将它们设为子包!

例如,如果我有一个包含这些类的项目:

  • GreetingInputWindow
  • GreetingDatabaseObject
  • GreetingDatabaseConnector

我可能会将它们全部放在greeting 包中。如果我愿意,我可以将GreetingInputWindow 放入greeting.ui 包中,将另外两个放入greeting.db 包中。

【讨论】:

    【解决方案3】:

    我强烈反对从实现的角度组织包,例如controllers、data 等。我更喜欢按功能对它们进行分组,即feature1、feature2 等。如果一个功能相当复杂并且需要大量的类,然后(并且只有这样)我创建了像上面这样的子包,即feature1.controllers、feature1.data 等。

    【讨论】:

    • michael667 所描述的方法的好处是,IMO,它使日志配置更加容易。如果我想查看与汽车相关的所有内容,我可以在汽车包中配置日志记录,例如
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2015-11-12
    • 2010-10-17
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多