代码之家  ›  专栏  ›  技术社区  ›  Alan Jackson

你如何组织一个大型项目的课程?

  •  1
  • Alan Jackson  · 技术社区  · 16 年前

    我们的应用程序中有许多特性,可以作为一个模块非常具体地描述。通常有某种类型的设置对话框,然后当用户单击OK时,它会将进程配置为运行并运行该进程。有时它们会被更多地调用,用户会打开新的对话框并在对话框上工作一段时间,做许多事情来更改基础数据库。

    我通常以几个标准课程结束

    ConfigPanel.cs
    ConfigPanelData.cs
    ProcessRunner.cs
    ApiWrapper.cs (for calling the process from somewhere else)
    

    如果我有一个更端到端的模块,它可能是 工作面板 WorkDATA.CS SETUPOPTIONS.cs(运行之间面板状态保持不变) lib/whateverbackendstufactinedtosupportmodule APIWRAPER

    现在每个文件夹都有:

    UI/Panels/
        Module1Panel.cs
        Module2Panel.cs
    UI/PanelData/
        Module1PanelData.cs
        Module2PanelData.cs
    UI/PanelManagers
        Module1PanelManager.cs
        Module2PanelManager.cs
    Core/Module1/
        Module1.cs
        Module1Helpers.cs
    Core/Module2/
        Module2.cs
        Module2Helpers.cs
    

    正如你所看到的,一切都是真的分散开的。有了50多个模块,这些文件夹就没有真正的组织。即使将它们按子系统分解,它们仍然是一团乱麻。把所有的东西都放在一起,这样所有的东西都由函数而不是类类型分开,这会是一个糟糕的设计吗?

    Module1/
        Module1Panel.cs
        Module1PanelData.cs
        Module1PanelManager.cs
        Module1PanelLib.cs
        Module1PanelWrapper.cs
    Module2/
        Module2Panel.cs
        Module2PanelData.cs
        Module2PanelManager.cs
        Module2PanelLib.cs
        Module2PanelWrapper.cs
    

    你如何组织你的课程,有哪些优点/缺点?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Igor Brejc    16 年前

    这是不是不好的设计 一切都在一起所以一切都是 由函数而不是 类类型?

    没有一般规则,这取决于情况、个人偏好和代码中的更改模式。 不过,我建议您执行以下操作:

    • 在超类中保留尽可能多的公共代码以消除任何冗余。也许这样就不需要某些子类了。
    • 我不确定您所说的“模块”是什么意思,但我建议您使用同一项目中的名称空间+子目录来分隔这些内容,而不是使用单独的程序集。仅将程序集用于部署分离目的和类似的内容。
    • 你提到的那些“助手”类听起来有点代码味。它们可能违反OO原则。查看此链接了解更多信息: http://blogs.msdn.com/nickmalik/archive/2005/09/06/461404.aspx . 也许您可以重新组织代码,减少对这些类的需求,同时获得更清洁的OO设计的好处?