软件开发中的代码生成

时间:2011-01-18 17:49:25

标签: .net language-agnostic code-generation

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

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

我的问题:有没有办法开发一个主要基于代码生成的信息系统?或者某些方法可以更广泛地使用代码生成工具和模板?如果我有这个,我可以处理更具体的事情。

我也试着在这里看一些问题,即音乐会代码生成,但大多数是关于它是好还是坏,或者是关于它们的一般经验。我想要的是具体的工具和模板的经验以及他们在开发中获得的利润。

非常感谢您的回答。

3 个答案:

答案 0 :(得分:3)

是的。

我认为你可以看到的最重要的事情之一就是Naked Objects。

Java:Naked Objects.org

.NET:Naked Objects MVC

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

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

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

所以是的,你可以用一代人来做很多事情,我甚至都没有触及你真正能做到的事情。

答案 1 :(得分:1)

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

  

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

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

  

大多数业务应用程序都是数据表单应用程序,即用于查看,输入和编辑数据的用户界面。使用大多数开发工具,您可以花费大量时间重复执行相同的任务。您编写代码以与数据库交互,编写用户界面的代码,并编写业务逻辑代码。通过使用LightSwitch,大部分工作已经完成。实际上,可以在不编写任何代码的情况下创建LightSwitch应用程序。对于大多数应用程序,您必须编写的唯一代码是只能编写的代码:业务逻辑。

答案 2 :(得分:0)

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

C预处理器是一种代码生成方式。大多数大型C项目最终会根据前处理宏开发成自己的C方言。

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

生成项目的一部分是很常见的,也许Perl脚本为嵌入式系统创建表示为初始化C阵列的快速Sin / Cos查找表。或者,某些测量的性能数据文件会“内置”到应用程序中,以帮助估算某些成本或其他成本。

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

还有各种机制来省去实施zillion getter和setter的麻烦。 (穷人,穷人,Java。)

成本很复杂。您必须管理“源代码”和“生成代码”之间的区别。如果你看到有人在“源代码控制系统”中检查“生成的代码”...如果这真的是正确的话,请认真思考!

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

当然,有些服务器系统甚至在运行时即时编写和编译代码。我:我很害怕!但我从来没有使用它。