【发布时间】:2012-09-06 11:54:04
【问题描述】:
到目前为止,我一直用来自学代码的 c# 项目是一种包含大量函数和大量“全局”静态变量的巨大形式。
在阅读了这里,做了一些教程等之后,我现在正试图通过重构它以正确使用类和封装的过程。
我的课:
-
Program.cs- 基本上除了初始化Form1之外什么都不做。 -
Form1.cs= 生成和修改所有 UI。调用其他类中的公共函数,并有一些其他类可以调用的公共函数来更新它。 -
UiStrings.cs= 包含所有错误消息、对话框、说明等。 -
Options.cs= 跟踪一些设置,构建和更新安装文件的路径,根据 UI 的变化执行代码。 -
Updater.cs= 跟踪当前版本、下载资产、将它们放在正确的位置并调整选项。 -
Installer.cs= 根据当前选项处理安装/卸载/备份所有资产。
最初,我在Form1 中为我的其他每个类创建了一个实例。这适用于Form1 能够访问UiStrings 或Options 中的函数和属性。然而,这些类无法访问彼此的某些部分,大概是因为它们没有被实例化。
这使我的目标是使我的所有自定义类(如 UiStrings 和 Options 静态化(因为我不需要它们的多个实例)。这也意味着我必须将每个类中的每个函数和属性都设为静态。
对于真正知道自己在做什么的人来说,这是一个合理的解决方案吗?
到目前为止,它似乎在我的测试中有效,但是我最初没有任何课程的尝试也很好,直到我知道它有多么错误。
【问题讨论】:
-
UiStrings和Options是静态的或实现单例模式是有意义的。但恕我直言,一切静态都是代码异味(大量全局变量也是如此)。
标签: c# winforms class architecture