c# - Winforms 选择哪种设计模式/敏捷方法论

标签 c# .net winforms domain-driven-design scrum

<分区>

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

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

最佳答案

这是一个非常主观且有争议的话题,尤其是在开发人员社区中。我只是写下我的想法。你可以从中获得好处 [如果有的话] -

没有人在设计时有意识地应用设计模式。总有一种迭代的方法可以达到好的设计。 OO原则应该是S.O.L.I.D.你应该巧妙地选择你的抽象。尝试从接口(interface)的角度思考。

对于您的遗留代码,我认为您应该首先从 domain classes 开始.基本上,您的实际数据模型所在的位置。您与存储库/数据库对话的地方。开始一个一个地重构它们并围绕它们创建单元测试。我在这里不强调测试驱动。但是,您需要有可靠的单元测试,因为您现在正在重写它。一旦您的域类准备就绪,就可以很容易地按照任何标准模式连接到 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's在您进行设计时阅读文章。希望这会有所帮助。

关于c# - Winforms 选择哪种设计模式/敏捷方法论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10987594/

相关文章:

c# - Datagridview 上下文菜单总是在 hittest 中显示 -1

c# - 如何正确处理 LinqToSql 类的 System.Nullable<T> 字段?

.net - 在 NAnt 中从 <solution> 到 <exec program=msbuild>

带有 beginReceive 的 c# 异步服务器

c# - 将 .net 4.0 中的 Entity Framework 与 Oracle 数据库一起使用 - 可能吗?

用于屏幕抓取到数据表的 C# 解决方案?

c# - (BackgroundWorker)我正在使用 while() 尝试输出数字,但我只有上一个周期输出的数字

c# - 将一个方法作为参数传递给另一个方法

c# - 主页检查 session 问题

C#、NUnit : Clear way of testing that ArgumentException has correct ParamName