zoukankan      html  css  js  c++  java
  • 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,需要对成本及收益或效果进行估算。

  • 相关阅读:
    websocket以及它的内部原理
    服务端向客户端推送消息的几种方式,基于ajax,队列以及异常处理实现简易版本的群聊功能(长轮询)
    分布式爬虫以及语言介绍
    去重以及布隆过滤器
    下载中间件,selenium集成
    【商城应用】商品运费流程设计
    引用本地jar包记得加扫描路径(注意重复bean)
    乐观锁悲观锁场景
    Linux时区
    JsonObject常用转换
  • 原文地址:https://www.cnblogs.com/zgynhqf/p/1607714.html
Copyright © 2011-2022 走看看