如何组织课程,包

你如何决定一个包名应该是什么以及哪个类应该进入哪个包?

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

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

你怎么知道你是不是在复制软件包function? 这只是熟悉项目。

任何指针赞赏。

课程应该做一件事( 单一责任原则 )。

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

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

  • GreetingInputWindow
  • GreetingDatabaseObject
  • GreetingDatabaseConnector

我可能只是将它们全部放在greeting包中。 如果我想,我可以将greeting.ui放在greeting.ui包中,将另外两个放入greeting.db包中。

我强烈反对从实现的角度组织包,如controllersdata等。我更喜欢按function对它们进行分组,即feature1feature2等。如果一个function相当复杂并且需要大量的类,然后(只有那时)我创建上面的子包,即feature1.controllersfeature1.data等。

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

com.mycompanyname然后:

  • API
  • 控制器
  • 数据(适用于型号)
  • 工作(为cron工作)
  • 报告
  • 的servlet
  • utils的

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