【问题标题】:Code generation in software development软件开发中的代码生成
【发布时间】:2011-01-18 17:49:25
【问题描述】:

第一个更广泛的观点:我得到了一个学校项目的任务,其中指出“通过业务和数据层核心的代码生成来设计和实现用于快速开发 IS 的工具。(释义)。它特定于 .NET 和 C#,但任何东西在这种情况下很好。

我在代码生成或信息系统开发方面没有那么广泛的知识。我正在寻找一些代码生成框架和工具。更具体地说是 T4 和 CodeSmith 生成器。引起我注意的一件事是 .netTiers 模板集,其中包含一些有趣的模板,可用于软件开发。但我不知道它们在实际开发中能有多大用处。

我的问题是:有没有办法开发一个主要基于代码生成的信息系统?或者有什么方法可以更好地利用代码生成工具和模板?如果我有这个,我可以做更具体的事情。

我也尝试在这里查看一些问题,即音乐会代码生成,但其中大多数是关于它的好坏,或者对它们的一般经验。我想要的是使用特定工具和模板的特定经验以及它们在开发中的利润。

非常感谢您的回答。

【问题讨论】:

  • 我在这里可能有点密集,但是“IS”代表什么?
  • @Oded,不只是你 :-)
  • 一个疯狂的猜测:信息系统?
  • @Oded:对不起,它的意思是“信息系统”,我编辑了我的问题。但是,是的,我不确定它是否是正确的名称,因为我在这里看不到它,但我不记得有任何其他方式来称呼它。
  • 这是功课吗?如果他们问“寻找快速代码生成的工具”,我或许可以理解这一点。你的教授要求为此设计一个工具?你的物理系学生设计核反应堆作为功课吗?

标签: .net language-agnostic code-generation


【解决方案1】:

是的。

我认为你能看到的最大的东西之一是裸体对象。

Java:Naked Objects.org

.NET:Naked Objects MVC

这两个基本上只是从域模型生成一个完整的程序。很有意思。 Scott Hanselman 在这里做了一个 Hanselminutes:Hanselminutes w/ Richard Pawson。上面还有一些非常有趣的东西的链接。

如果您观看来自 PDC PDC 的 Hanselmans 的演讲,他会使用代码生成来做很多事情。

我的公司使用 CSLA .NET 模板和 CodeSmith 从数据模型生成整个 DAL 和 BO 层(没有自定义函数)。

所以是的,您可以使用生成来做很多事情,而我什至还没有真正触及您真正可以做的事情的表面。

【讨论】:

  • 这很有趣!与 Eclipse 建模框架有什么比较?
  • 不错的一个。我去看看。
  • @davidvanbrink 我不知道
  • 好吧,我会接受这个作为答案。但这只是因为没有多少其他想法出来,而你给了我更多想法。
【解决方案2】:

对于 ASP.NET,您可以使用ASP.NET Dynamic Data Scaffolding

脚手架是指自动为数据库中的每个表生成网页的动态数据元素。这些自动生成的网页为每个表提供创建、读取、更新和删除 (CRUD) 操作。脚手架由页面模板、实体页面模板、字段页面模板和过滤器模板组成。这些模板使您能够快速构建功能性数据驱动的网站。

对于桌面应用,可以使用Visual Studio LightSwitch

大多数业务应用程序都是表单数据应用程序,即用于查看、输入和编辑数据的用户界面。对于大多数开发工具,您的大部分时间都花在重复执行相同的任务上。你编写代码来与数据库交互,你编写用户界面代码,你编写业务逻辑代码。通过使用 LightSwitch,已经为您完成了大部分工作。事实上,无需编写任何代码即可创建 LightSwitch 应用程序。对于大多数应用程序,您唯一需要编写的代码就是只有您可以编写的代码:业务逻辑。

【讨论】:

    【解决方案3】:

    代码生成有它的位置和成本。

    C 预处理器是一种代码生成形式。大多数大型 C 项目最终会基于预处理器宏发展成自己的 C 方言。

    汇编语言中的宏非常有用。

    生成项目的某些部分是非常常见的,也许是一个 Perl 脚本,它为嵌入式系统创建一个以初始化 C 数组表示的快速正弦/余弦查找表。或者一些测量的性能数据文件被“内置”到应用程序中,以帮助估计一些成本。

    在 Java 中,通常使用 JAXB 等来生成基于 XML 模式的类。 (我怀疑这是最接近您的问题意图的@Euphoric ...)

    还有各种机制来省去实现无数 getter 和 setter 的麻烦。 (可怜,可怜,Java。)

    成本是复杂性。您必须管理“源代码”和“生成代码”之间的差异。如果您看到有人将“生成的代码”检查到“源代码控制系统”中……请三思而后行!

    希望您的 Make 或构建系统知道如何构建适当的生成文件并使用它们。

    当然,一些服务器系统甚至可以在运行时即时编写和编译代码。我:我怕这个!但我从来不用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2011-10-04
      • 2014-05-17
      • 1970-01-01
      • 2020-01-08
      相关资源
      最近更新 更多