如何组织源代码文件?按功能还是输入?

时间:2009-02-24 22:07:46

标签: language-agnostic

在我早期的编码日,我倾向于将以类似方式运作的课程分组。例如:

  • 数据传输对象
    • 对象A
    • 对象B
  • 对话框
    • 对话A
    • Dialog B

过了一会儿,它开始让我感到沮丧的是,当我在应用程序的某个特定部分工作时,我必须四处跳转才能把它拼凑起来。

在过去的几年里,我倾向于按功能组织事物。通常共享的类,例如数据库对象,我仍然保持在一起。我认为这对网站这样的事情甚至有意义:

  • 页面A.
    • 图像
    • 资源1
    • 对话1
  • Page B.
    • 图像
    • 资源2
    • Dialog 2

这是最好的方法吗?有没有人有一个好的经验法则可以遵循?

3 个答案:

答案 0 :(得分:8)

对于Java,包是重用的单位。

对于Python,模块(以及包)是重用的单位。

包装应该是一个独立的东西。

如果将所有数据传输对象放入一个大包中,则没有可重用的东西。您可能想要所有这些数据传输对象定义。

如果您通过“实体”(模型,视图,控件,数据访问等)将事物放在一起 - 那么您就拥有了可以在其他应用程序中共享的可重用模块。

答案 1 :(得分:4)

“逐个功能”方法似乎合情合理,对我来说很有用,当然对于Java来说...你想要多久打包数据访问层,而不是那个漂亮的新功能?

我认为javapractises.com上的分析"Package by feature, not layer"非常容易理解,并且涵盖了一些我没有想过的角度,比如逐个功能包在其他领域如何工作而不是编程。 / p>

答案 2 :(得分:0)

您应该像使用您的语言/工具的其他代码那样执行此操作。这不是一个与语言无关的问题;某些语言/工具期望“文件组织”与“这些文件中的内容”之间存在关联,您应该尊重它。