在我早期的编码日,我倾向于将以类似方式运作的课程分组。例如:
过了一会儿,它开始让我感到沮丧的是,当我在应用程序的某个特定部分工作时,我必须四处跳转才能把它拼凑起来。
在过去的几年里,我倾向于按功能组织事物。通常共享的类,例如数据库对象,我仍然保持在一起。我认为这对网站这样的事情甚至有意义:
这是最好的方法吗?有没有人有一个好的经验法则可以遵循?
答案 0 :(得分:8)
对于Java,包是重用的单位。
对于Python,模块(以及包)是重用的单位。
包装应该是一个独立的东西。
如果将所有数据传输对象放入一个大包中,则没有可重用的东西。您可能想要所有这些数据传输对象定义。
如果您通过“实体”(模型,视图,控件,数据访问等)将事物放在一起 - 那么您就拥有了可以在其他应用程序中共享的可重用模块。
答案 1 :(得分:4)
“逐个功能”方法似乎合情合理,对我来说很有用,当然对于Java来说...你想要多久打包数据访问层,而不是那个漂亮的新功能?
我认为javapractises.com上的分析"Package by feature, not layer"非常容易理解,并且涵盖了一些我没有想过的角度,比如逐个功能包在其他领域如何工作而不是编程。 / p>
答案 2 :(得分:0)
您应该像使用您的语言/工具的其他代码那样执行此操作。这不是一个与语言无关的问题;某些语言/工具期望“文件组织”与“这些文件中的内容”之间存在关联,您应该尊重它。