090723 T Code Generate 的思考

今天看了公司(易车)原来团队开发的部分项目的代码,发现很多项目是基于Typed DataSet或NetTiers的,两者都是代码生成器(Code Generator,以下简称CG),前者是VS自带的工具,而后者则是第三方开发,同样的还有CodeSmith、动软等。这些CG的输入/信息来源,大都是数据库中的元数据。

其实,我个人也开发过CG。
第一个是在上海外高桥实习时用于转换C语言到C#语言的转换器。
另一个则是配合hxy.LayersFramework框架的生成器,其输入主要来自于LINQTOSQL根据数据库元数据生成的源代码,输出则是该框架对应的实体类、管理类、数据访问层等。其生成的代码与一般的CG生成的代码的用途还有些区别:这些代码只在一开始时生成一遍,然后手工在上面定义新的内容。而上面的CG生成的代码一般不允许修改,也不能添加内容。因为一旦这样后,再生成时,会丢失这些更改。

所以,我并没有去开发一款适合大众使用的CG,如类似于Code Smith的。因为其实代码CG的作用是帮助开发人员编写重复而乏味的代码。而这类代码在各个应用程序下可能会各不相同。这时,很可能需要开发一个适应此情况的CG。
例如,我目前的开发模式习惯使用UML来对Model关系建模,然后使用C#语言编写接口定义具体的模型。大部分情况下,这些接口都会直接映射到数据表中去,这时,我需要的应该是这样一个CG:对应一个C#接口源代码或文件的输入,可能需要输出对应的表的创建语句sql、实现这个接口的类、类的管理器……等。
当然,是否需要开发这个CG,需要对成本及收益或效果进行估算。

时间: 2024-11-02 17:00:56

090723 T Code Generate 的思考的相关文章

如何做好Code Review:思考、方法和实践

最近被要求做一个关于Code Review的讲演.首先要说明的是,我并不是太擅长开展Code Review的活动.做这个完全是因为答应了别人又不好反悔.不过在做准备的过程中还是有一些感想. 关于Code Review我所了解到的行业中最著名的是Bill Gates汇报.这是微软在软件开发过程中的一个重要环节,因为Bill Gates亲自参加而备受关注,在行业中广为流传. Ok,进入正题了. 我们面临的共同问题: 1.对于开发周期较长的软件项目,可维护差的代码对项目造成了极大的困扰 2.结构复杂的

C# Meta Programming - Let Your Code Generate Code - Introduction of The Text Template Transformation Toolkit(T4)

<#@ template language="C#" #> <#@ output extension=".cs" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <# Type[] types_to_generate = new[] { typeof(object), t

轻量级的代码生成方案选择

    上次说到MyAppfuse要有一个代码生成工具, codegeneration.net上汇集了各种平台各种语言的工具.     其中一些用到UML做元数据的,就变成了上年最流行的MDA tool.MDA其实是超级炒冷饭了,偶N年前的毕业论文做的就是这个题目,现在再看进步也不大.     不过想下也正常.因为MDA是由模型.实现和转换程序三者构成的,如果模型定义飞速发展了,与底层实现之间必定会形成巨大落差,需要转换程序做大量工作来消弥.当落差足够大时,就会很少人愿意做这个转换工作.而为了减

Intellij IDEA快捷键大全

  Intellij IDEA这个工具有些方面确实比较优秀,使用了一段时间的IntelliJ IDEA,感觉这个JAVA IDE非常好用!比如javascript自动补全功能.html页面编写功能等,相比于其他IDE工具就会好很多. 其他的快捷键还有很多,象Ctrl+G(跳转到指定行).Ctrl+F4(关闭当前编辑页面).Ctrl+F(搜索)等等,这些快捷键由于是各个编辑器都会提供的,而且定义的键位也都差不多,就没什么可说的了; Alt+回车 导入包,自动修正 Ctrl+N 查找类 Ctrl+S

ReSharper 配置及用法

原文 http://www.cnblogs.com/vingi/articles/2881708.html 1:安装后,Resharper会用他自己的英文智能提示,替换掉 vs2010的智能提示,所以我们要换回到vs2010的智能提示 2:快捷键.是使用vs2010的快捷键还是使用 Resharper的快捷键呢?我是使用re的快捷键 3: esharper安装后,会做几件事情,这几件事情对于除此使用者,比较麻烦,因此归纳总结一下,以资参考. (1).会将选项--文本编辑器--C#--常规--自动

Mac 下隐藏显示文件夹的快捷键

Command+Shift+. 可以显示隐藏文件.文件夹,再按一次,恢复隐藏:finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹. 原来的: Command+Shift+. 可以显示隐藏文件.文件夹,再按一次,恢复隐藏:finder下使用Command+Shift+G 可以前往任何文件夹,包括隐藏文件夹. 不好用了,不知为什么. 以上从  https://www.zhihu.com/question/24635640/answer/127004307  粘来的,

Resharper上手指南

原文http://www.cnblogs.com/renji/archive/2007/12/11/resharper.html Resharper上手指南 我是visual studio的忠实用户,从visual studio 6一直用到了visual studio 2005(典型的80后是吧).我很想开始使用Visual Studio 2008,但是我不能,因为Resharper还不兼容.NET3.5的语法. Resharper是我一直非常喜欢的工具.响当当的名声绝对不是吹牛皮吹出来的.如果

IMAGES RE-SIZE IN MAGENTO

In this article I will show how to use re-size parameters of default Magento images re-size feature. By default the re-size of the product images working in the following way: 1 2 <?php echo $this->helper('catalog/image')             ->init($_pro

深入Vue2.0底层思想–模板渲染

初衷 在使用vue2.0的过程,有时看API很难理解vue作者的思想,这促使我想要去深入了解vue底层的思想,了解完底层的一些思想,才能更好的用活框架,虽然网上已经有很多源码解析的文档,但我觉得只有自己动手了,才能更加深印象. vue2.0和1.0模板渲染的区别 Vue 2.0 中模板渲染与 Vue 1.0 完全不同,1.0 中采用的 DocumentFragment (想了解可以观看这篇文章),而 2.0 中借鉴 React 的 Virtual DOM.基于 Virtual DOM,2.0 还