在过去两年中担任C#/WPF/MVVM开发人员后,我最近在一家新公司接管了VB/Winform项目。
我已经成功地将项目转换为C#。我一直在进行大量研究,试图找出适合该项目的最佳方法,但我正在尝试找出究竟需要进行多少重构和重新配置。
我的问题是:以前的开发人员创建了两个巨大的静态类。有30多种表格可用于各种任务。每种形式都是通过在屏幕的“主菜单”类型上单击按钮驱动的事件来调用的。程序初始化时,将调用这些巨型类之一的函数,以实例化每种形式。还有大量的静态和常量。
我将这些常量分解出来,并为它们创建了一个特定的类。我将大型类划分为较小的,更易于管理的(且特定于职责的)类,但是我有一个非常大的初始化函数,可以实例化所有这些形式。
因此,我的问题(最后)是:我在资源噩梦之上写的是吗?或者,这是我应该保留的某种正常的VB/Winform设计模式吗?我是否应该重写一下,以便在单击调用该表单的按钮时实例化每个表单/类,以便在关闭时可以将其丢弃?
谢谢您给我的任何指示。如果我可以提供更多信息以使其更加具体,请发表评论,我将进行编辑。
最佳答案
是的
绝对不。该系统的设计在VB和C#中几乎相同。除了一些非常小的异常(exception),两种语言之间的区别只是语法。
理论上可以。表单的操作应与您使用C#编写时一样。当然,如果原始开发人员非常喜欢全局状态,那么在表单的一个外观和下一个外观之间可能会潜伏着各种各样的状态。
VB的一些功能可能会使较弱的开发人员误入歧途。 Module的存在(本质上是一个静态类,但有时更方便)可以诱使某些人添加比他们应有的更多的全局状态。同样在VB中,它会根据需要自动创建每个表单的单个全局实例,并与该类具有相同的名称。这可能会导致开发人员将表单混淆为类和对象-导致表单的单个实例,而不是根据需要构造和处置。
关于c# - 在C#和Winforms中正确的类实例化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36408751/