2012-03-12 83 views
1

我正在研究一个用C#编写的小应用程序。 GUI由XAML/WPF组成。 没有什么奇特的。用户输入一些设置,按下按钮并等待事情发生。然而,随着应用程序在过去几周的增长,代码变得越来越糟糕。真的很可怕。在我认为他们不属于的地方进行修复。它正在慢慢成为可维护性的地狱。而且这个应用程序在不久的将来还会增长很多。与GUI通信

我非常想重构这个更成熟,可维护的代码。如果不是更好的代码和设计应用程序。

因为用户必须知道的东西是实际发生的事情,我打算增加一个状态栏,显示一些重要的东西没有真正的方法,使用户至少有一些想法发生了什么。

现在,我应该如何去做这件事。我的gui实例化一些对象,然后实例化其他对象。我可以通过应用程序传递对gui窗口的引用,但这只是肮脏的。你们推荐什么?

我一直在寻找到MVVM了一下,但我不知道这是我需要什么。任何帮助?

回答

4

可以肯定,你需要MVVM把一切为了,但你面对的是共同学习的过程。

阅读尽可能多地了解MVVM和OOP(专注于OOP,如果你不掌握了很多),直到你觉得你写的代码很舒服使用它(你可能需要一些年来获得到那个级别)。

你有一个惊人的道路在你面前。

1

MVVM确实是一种构建代码以提高可维护性的方法。我现在已经使用它一段时间了,这是一种非常自然的,低阻抗的方式,可以将一些代码构建在一起,分解关注点。

另请注意,您也可能使MVVM变得丑陋。它仍然归结为在代码级别遵循一些体面的做法。

保持遍历代码,直到感觉就像是你不害怕让别人看的东西。

0

是的,MVVM是一种解决方案。

一般情况下,你可能会认为Observer pattern和事件。它可以帮助您启用任何对象来通知他们不知道的GUI。

0

你可以使用MVVM解决耦合问题是的。

有了适当的数据和绑定,你可以有状态留在你的繁重类。

您可以使用一个布尔值,只是表示它是否正在工作,或添加描述状态的字符串,或可空类型的结果,您可以使用一个转换器测试,等等

在MVVM Light中 - http://mvvmlight.codeplex.com/ - 您还有一个Messenger工具,可以用另一种方式解决问题。你会播放重型升降机的状态变化,而不会关心谁在听(脱钩)。这种模式有几个名称和变体(观察者,订阅,信号,...)