包裹旨在帮助您找到东西.
如果他们让它变得更加混乱,你就没有做得对.如果包结构不直观,实际上找到类比在平面结构中更难.
据我所知,有两个基本的学校组织课程:
>首先按模块组织.在这里,您的更高级别的软件包是系统的不同模块,您可以通过功能进一步拆分它.
>按功能组织.在这里,您首先按功能组织(例如,一个包中的所有控制器类,另一个包中的所有数据容器等),并可选择按模块细分.
两个系统都有优点和缺点,我发现它们非常相似,尽管我更喜欢模块方法.
真正重要的是要遵循一个系统而不要将它与另一个系统混合.如果您的新课程似乎不属于您现有的课程,请不要将自己的课程变成他们不属于的课程,也不要害怕创建新课程.
如果包看起来变得太大,您可能想要拆分它.但是,是否应该分割一揽子方案的决定应该考虑其中的类别之间是否存在明确的概念上的划分而不是数字.一个包含一个类的包就像一个有三十个类的包一样好,如果它们显然是为什么它们就在那里.
至于分离接口和实现,首先,我可能会质疑它们的必要性.我经常遇到只有一个合理实现的接口,这让我质疑它们存在的理由. (有时候有充分的理由,但往往没有.)
但是如果你有一个给定接口的多个实现,那么是的,我将它们分开.接口将是com.foo.Bar,实现将类似于com.foo.bars.CrowBar,com.foo.bars.TaskBar.显然,如果您的实现属于不同的模块,那么您可以将其更改为com.foo.moduleX.bars.CrowBar或com.foo.bars.moduleX.CrowBar,具体取决于您所遵循的系统.
重新阅读这一切,听起来有点复杂,但可能第一句话是最重要的:不要盲目遵循包装原则,包装应该帮助你找到课程,而不是阻碍你.
本文探讨了软件包结构的设计原则,包括按模块或功能组织的不同方式,并提供了如何有效使用包来提高代码可读性和维护性的建议。
774

被折叠的 条评论
为什么被折叠?



