2

我在没有遵循任何适当的设计模式或敏捷方法的情况下开发了桌面(winforms)应用程序。现在,我的任务是用 C# (Winforms) 重写现有的 ERP 应用程序。我一直在阅读有关领域驱动设计、scrum、极限编程、分层架构等方面的内容。尝试每一种方法然后决定走哪条路都非常令人困惑且非常困难(由于时间限制)。我很难理解大局并了解要遵循哪种模式和敏捷方法。更具体地说,我想知道的是:

  1. 是否有可能遵循领域驱动设计并且仍然保持敏捷。
  2. 在这种特定情况下,我应该选择极限编程还是 scrum
  3. MVP 和 MVVM 适合哪里,哪个对我来说是更好的选择
4

2 回答 2

6

这是一个非常主观和有争议的话题,尤其是在开发者社区。我只是写下我的想法。你可以从中得到善(如果有的话)——

没有人在设计时有意识地应用设计模式。总有一种迭代方式可以达到一个好的设计。OO 原则应该是可靠的 你应该巧妙地选择你的抽象。试着从接口的角度来思考。

对于您的遗留代码,我认为您应该首先从domain classes开始。基本上,您的实际数据模型所在的位置。您在哪里与您的存储库/数据库交谈。开始一一重构它们并围绕它们创建单元测试。我不是在这里强调测试驱动。但是,you need to have solid Unit Tests因为你现在正在重写它。一旦你的域类准备好了,就可以很容易地按照任何标准模式连接到 UI。

你可以看看这个简单的 Winforms 应用程序,它具有普通 UI 模式的所有元素以及使用 backgroundworker 的多线程概念 -

http://www.codeproject.com/Articles/88390/MVP-VM-Model-View-Presenter-ViewModel-with-Data-Bi

这对于代码示例的详细解释也非常有帮助 - 他展示了如何将 MVVM 用于 Winforms [上述代码项目文章的父级] -

http://aviadezra.blogspot.co.uk/2009/08/mvp-mvvm-winforms-data-binding.html

我在这里不能再详细说明了,因为我说这是一个非常主观的话题。在进行设计时,您可以搜索Martin Fowler 的一些文章。希望这可以帮助。

于 2012-06-11T22:32:08.060 回答
2

虽然你的问题很笼统......我知道你正处于一段伟大旅程的开始。

为了帮助你,我会根据我的经验给你一些建议......

一般来说,MVVM 非常适合中大型现实世界的应用程序(甚至适用于 winforms),因此您可以从这里开始研究。然后,您可能希望至少拥有一个 3 层架构(数据-业务-表示)。您也可以考虑服务层,稍后会...

嗯……试着坚持你现在最了解的东西,然后在路上适应!

正如“Angshuman Agarwal”所说……在每一步都尝试在界面中思考,这是成功的关键。

祝你好运!

于 2012-06-11T22:29:52.520 回答