【问题标题】:How can I avoid having to write boilerplate code?如何避免编写样板代码?
【发布时间】:2011-03-22 10:49:33
【问题描述】:

嗯,我一直在关注 NerdDinner 在线教程,我已经完成了一个 T。

现在我已经使用几乎相同的架构实现了我自己的项目。

我注意到我的流程是:

  1. 创建数据库。
  2. 创建 DBML。
  3. 使用数据访问方法创建 |TableName|Repository.cs 类。
  4. 创建部分 |TableName|处理验证的类。
  5. 冲洗并重复所有表格。

当我完成时,我已经筋疲力尽了,除了拖动和复制粘贴代码以及更改变量名之外,我还没有真正做任何事情。

我在这里错过了什么。我在哪里可以改善我所处的这种样板雾霾?

编辑:没有创建我自己的 T4 模板,有什么工具可以帮助我吗?

【问题讨论】:

  • 我在 MVC 中工作了很长时间,我仍然这样做
  • 说真的,这是最好的,最被接受的方式?看到 90% 的过程是机械的,难道没有工具可以为您做到这一点吗?
  • 我还没有看到,也许其他人看到了,希望他们把它贴在这里:)
  • “没有创建我自己的 T4 模板,有什么工具可以帮助我”。还有其他的模板语言,并且可能有特定的模板机制来处理这个数据库工作,但是许多开发人员只是为这样的问题编写代码生成器。 T4 是一种代码生成语言。
  • 熟悉在您使用的任何 IDE 中创建模板。有许多工具可以让您生成一些答案中列出的代码。拥有一个可以帮助您实现代码的良好 IDE 也很有帮助,例如 IntelliJ、Eclipse 和 NetBeans。对于 Visual Studio,您可能需要购买像 Resharper 这样的好插件,但绝对物有所值。

标签: asp.net-mvc-2


【解决方案1】:

Visual Studio Templates

我没有使用过它们,但我假设如果您花时间自定义它们,您将能够使 Visual Studio 立即生成很多您已经完成的工作,特别是使用嵌入的 T4 模板语言/解释器在 Visual Studio 中。

【讨论】:

    【解决方案2】:

    我用的不多,但也许你可以创建一个 codesmith 模板来处理这个问题。 http://www.codesmithtools.com/

    我已经看到它在 Nettiers 和其他一些场景中效果很好。

    【讨论】:

      【解决方案3】:

      看看这个以获得想法。它使用通用存储库和工作单元模式。

      http://elegantcode.com/2009/12/15/entity-framework-ef4-generic-repository-and-unit-of-work-prototype/

      也在这里。

      Advantage of creating a generic repository vs. specific repository for each object?

      我已经根据这些想法实现了一些东西。您可能还想查看使用服务层的接口等比书呆子晚餐示例显示的更多。

      尽管本教程很好,但它并不真正适合在企业应用程序中使用,因为它仍然非常紧密耦合。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        为此我使用自己的工具:http://github.com/Necroskillz/NecroNetToolkit

        它基本上绕过了你提到的所有步骤(验证除外,因为我在我的视图模型上进行了验证)。

        【讨论】:

          【解决方案5】:

          虽然它不直接关注 MVC,但我很喜欢使用 NetTiers http://nettiers.com 作为这种基础。我们从 Db 表和索引开始,然后生成存储过程及其相关数据和服务层代码。之后,我们添加我们自己的自定义存储过程,创建一个丰富(且易于理解)的基础。通过这种机制很容易适应未来的变化。

          我们还将代码生成绑定到我们的 Nant 构建过程中,提供了一种更新所有普通“管道”代码的非常快速的方法,使我们能够专注于有趣的事情。

          我们刚刚开始使用 MVC,并且发现 netTiers 服务层可以很好地使用它 - 随着我们 MVC 经验的增长,时间会证明一切。希望对您有所帮助!

          【讨论】:

            【解决方案6】:

            创建一个框架!

            【讨论】:

            • 已经有框架了。正在做的很多工作都是按照框架的方式做事,但是对于只想完成工作的人来说,创建一个完整的另一个项目是一个相当大的项目。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多