【问题标题】:Starting a new project - where do I start?开始一个新项目 - 我从哪里开始?
【发布时间】:2010-04-01 22:15:35
【问题描述】:

我将开始一个我自己的项目,它将是 ASP.NET MVC + Fluent NHibernate。我想尽可能多地使用测试优先的方法。那么,我究竟从哪里开始呢?数据库架构?领域模型?将领域模型类映射到数据库?

【问题讨论】:

  • 我最近开始走这条路,我建议jasondentler.com/blog/2009/08/how-to-using-the-n-stack-part-1 作为smoe 的起点。虽然我不完全同意,但它给了我一些想法
  • 你忘记了敏捷、依赖注入和 DDD。如果你不使用这些,我看不出你的项目怎么可能成功。
  • 我打算使用 DI 和 DDD,虽然我不是很了解它们,并且会一路研究它们

标签: asp.net-mvc unit-testing test-first


【解决方案1】:

如果您几乎没有编写测试的经验,那么从领域模型(或 UI 下方的更高级别)开始是最容易的。当您使用 TDD 驱动了域模型的设计时,您就会知道数据库模式需要是什么样的。推迟向系统引入数据库可能是件好事,因为处理数据库模式迁移会给开发增加一些开销。这也将带来更好的设计,因为这样域模型将更好地与数据库层解耦。

如果您擅长编写测试和 TDD,那么从端到端测试开始(在这种情况下,它们将针对 Web UI 编写)并产生一小部分功能可能会有所帮助系统的所有架构部分(在GOOS 中推荐)。换句话说,创建一个walking skeleton。这种方法的好处是(1)您将能够从一开始就解决和解决集成问题,(2)当端到端测试用于驱动设计时,它可以帮助您避免实施多余的部分,以及 (3) 编写端到端测试的困难迫使您改进架构并添加监控钩子,这也可能有助于监控生产中的系统。 (仍然需要集中单元测试,因为它们提供了类级别的设计压力,而且它们运行得更快,从而提供更快的反馈。)

我在Design for Integrability 写了更多关于后一种方法的文章。

【讨论】:

    【解决方案2】:

    需求收集。

    【讨论】:

      【解决方案3】:

      从应用程序的模拟/原型(例如 Balsamiq Mocks)开始,然后编写视图,在进行过程中模拟控制器,然后编写控制器逻辑,沿途模拟 DAO/存储库。当您开始编写 DAO/存储库时,您将对所需的域对象有一个很好的了解。淘汰这些并使用 Fluent Nhibernate 构建您的数据库。

      至少这是我尝试做事的方式。

      【讨论】:

        【解决方案4】:

        我推荐你S#arp Architecture 使用最佳实践结合的项目:

        • NHibernate
        • FluentNhibernate
        • TDD / DDD 采用模型优先方法,采用 Sqlite 数据库进行单元测试
        • 嘲讽
        • 存储库模式

        您也可以安装 S#arp arch。 Visual Studio IDE 的模板。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多