【问题标题】:Style/architecture sanity check for multiple classes and forms多个类和表单的样式/架构完整性检查
【发布时间】:2012-09-06 11:54:04
【问题描述】:

到目前为止,我一直用来自学代码的 c# 项目是一种包含大量函数和大量“全局”静态变量的巨大形式。

在阅读了这里,做了一些教程等之后,我现在正试图通过重构它以正确使用类和封装的过程。

我的课:

  • Program.cs - 基本上除了初始化Form1之外什么都不做。
  • Form1.cs = 生成和修改所有 UI。调用其他类中的公共函数,并有一些其他类可以调用的公共函数来更新它。
  • UiStrings.cs = 包含所有错误消息、对话框、说明等。
  • Options.cs = 跟踪一些设置,构建和更新安装文件的路径,根据 UI 的变化执行代码。
  • Updater.cs = 跟踪当前版本、下载资产、将它们放在正确的位置并调整选项。
  • Installer.cs = 根据当前选项处理安装/卸载/备份所有资产。

最初,我在Form1 中为我的其他每个类创建了一个实例。这适用于Form1 能够访问UiStringsOptions 中的函数和属性。然而,这些类无法访问彼此的某些部分,大概是因为它们没有被实例化。

这使我的目标是使我的所有自定义类(如 UiStringsOptions 静态化(因为我不需要它们的多个实例)。这也意味着我必须将每个类中的每个函数和属性都设为静态。

对于真正知道自己在做什么的人来说,这是一个合理的解决方案吗?

到目前为止,它似乎在我的测试中有效,但是我最初没有任何课程的尝试也很好,直到我知道它有多么错误。

【问题讨论】:

  • UiStringsOptions 是静态的或实现单例模式是有意义的。但恕我直言,一切静态都是代码异味(大量全局变量也是如此)。

标签: c# winforms class architecture


【解决方案1】:

如果您打开项目属性(在解决方案资源管理器中右键单击项目,右键单击,选择属性),您将找到 UiStrings 的“资源”选项卡和“选项”的“设置”选项卡。我建议将它们用作标准功能。这也消除了设计您自己的要素类的需要。

除此之外,您可以将它们设为静态,并且您不必创建类的副本来访问静态成员。语法是 ClassName.Method() 或 ClassName.Property 而不是 var instance = new ClassName(); instance.Method();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2010-11-12
    相关资源
    最近更新 更多