如何组织课程,包
你如何决定一个包名应该是什么以及哪个类应该进入哪个包?
我正在开发一个项目,我不断添加/删除类,并且不确定我是否需要新包,或者应该将其添加到我当前不知道的现有包中。
在创建新包时是否遵循一套规则?
你怎么知道你是不是在复制软件包function? 这只是熟悉项目。
任何指针赞赏。
课程应该做一件事( 单一责任原则 )。
执行相关操作的类应该放在同一个包中。 如果您发现可以更紧密地关联包中的某些类,请将它们作为子包!
例如,如果我有一个包含这些类的项目:
GreetingInputWindow
-
GreetingDatabaseObject
-
GreetingDatabaseConnector
我可能只是将它们全部放在greeting
包中。 如果我想,我可以将greeting.ui
放在greeting.ui
包中,将另外两个放入greeting.db
包中。
我强烈反对从实现的角度组织包,如controllers
, data
等。我更喜欢按function对它们进行分组,即feature1
, feature2
等。如果一个function相当复杂并且需要大量的类,然后(只有那时)我创建上面的子包,即feature1.controllers
, feature1.data
等。
我不相信包装惯例有任何硬性规定(尽管我可能是错的)。 通常我把它分解成
com.mycompanyname然后:
- API
- 控制器
- 数据(适用于型号)
- 工作(为cron工作)
- 报告
- 的servlet
- utils的
如果我发现我有一个不适合其中任何一个的类,那么我创建一个新包。