【问题标题】:How to organise large code files?如何组织大代码文件?
【发布时间】:2011-04-16 07:00:11
【问题描述】:

我越来越意识到我在任何单个文件中的代码通常很容易跨越数百行,虽然我知道实现可能是合理的,但它仍然感觉混乱和无组织。

我了解在某些情况下需要编写大量代码,但组织所有代码的最佳方式是什么?

我曾想过将变量与方法分开,privates 与 publics 和 internals 分开,但我不想这样做,因为我不禁想到 ONE 类的组件属于 ONE 文件.

当我使用 WPF 窗口的代码隐藏时,整个事情变得更加复杂,它似乎总是以指数速度快速增长成一个巨大的混乱。

另外:C# 有一个名为partial 的关键字,它允许您将一个类拆分为任意数量的文件,而不会影响功能。但是,我注意到微软似乎只使用partial 向您隐藏生成的代码(Winforms / WPF)。这让我质疑是否仅仅因为它有很多行而拆分一个类是对partial 的合法使用 -是吗?

谢谢

【问题讨论】:

  • 如果您可以将一个类拆分为多个逻辑上独立的partial 文件,那么您应该将这个类分成几个类。您可能在一个地方承担了太多责任。
  • 只对部分生成的类使用部分。

标签: c# code-reuse partial code-organization


【解决方案1】:

将您的代码分成职责。对于每个职责,定义一个类型。即关注Single Responsibility Principal。这样做会产生更小的代码单元,每个单元执行一个非常特定的功能。这不仅导致文件更小,而且设计和可维护性也更好。

【讨论】:

  • @Gabe:视图的大部分(通常是全部)功能都驻留在一个或多个视图模型中。遵循 SRP 意味着每个 VM 都有一个单一的职责,而不是将与视图相关的所有内容集中到一个 VM 中。也就是说,有时在代码隐藏中包含代码是可以的,如果它与视图严格相关(不是业务逻辑)并且不被其他视图共享(不是共享组件或行为)。在这种情况下,SRP 仍然得到支持,因为可以说,责任是“表达观点”。
【解决方案2】:

如果您的文件很大,因为它们包含一个很大的类/结构,那么这通常(但不总是)暗示您的类正在处理多个关注点,并且可以重构为一些更小、更多专业课。

【讨论】:

    【解决方案3】:

    如果我理解你的话,你的主要问题是你的表单最终太大了,这导致那些表单的类包含太多代码,如果你的表单不是很简单,这是很正常的。尝试最小化这种情况的方法是使用User Controls,因为如果您将控件移动到其他类,您也会将后面的代码移动到其他类。

    这有时会使控件之间的通信变得更加困难,但这通常可以通过每个类中的代码更容易理解的事实来弥补。

    【讨论】:

      【解决方案4】:

      我倾向于将属性、构造函数、方法和辅助方法(私有方法)与区域组合在一起。如果我有很多方法,我会根据它们的作用创建更多区域(特别适合重载)。说到重载,试着用可选参数最小化你的代码。

      据我了解,部分意味着该类存在于两个单独的文件中。 Web 窗体和控件是部分的,因为文件的另一个“部分”是随附的 as[p|c]x 文件。

      【讨论】:

      • @Kent - 他们还不错。他们只烧了我的房子一次。
      • 在类文件中使用区域通常是不良 OOD 的标志......而且永远不要隐藏复杂性!让它不那么复杂;-)
      • 认真的吗?你们不用地区吗?您的滚轮IS 磨损到什么程度了?
      • @Brad:有些人使用“转到定义”功能和/或 MetalScroll。而且我从未见过程序员的滚轮不再工作^^
      • 区域确实有可能被滥用。但是以正确的方式使用它们非常有用。对于较大的课程,例如UI 我通常将具有相似职责的方法组合在一起,例如渲染、布局、初始化。你也可以使用部分类,但我不想在文件之间切换。
      【解决方案5】:

      我的理论是,如果你不能在一个屏幕上看到整个方法(即你必须滚动),你应该把方法分解成更多的方法——要么在同一个类中,要么当代码被更多使用时不止一次进入辅助类。

      【讨论】:

        【解决方案6】:

        我们使用 stylecop。它有一点帮助,因为它在您的代码上强制执行结构以及应该出现在哪里的顺序。因此,您可以更直观地找到处理较大文件的方法。

        【讨论】:

          【解决方案7】:

          为了提高代码的可读性:您可以使用区域块:https://msdn.microsoft.com/en-us/library/9a1ybwek.aspx。至于改进代码的结构和设计 - 请参阅一些专业书籍。

          【讨论】:

            猜你喜欢
            • 2023-04-01
            • 2011-08-08
            • 2011-01-16
            • 2010-09-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多