代码生成技术在当前软件开发中的位置

来源:互联网 发布:java double运算误差 编辑:程序博客网 时间:2024/05/02 01:52

我以asp.net开发为例,浅析代码生成技术在当前软件开发中的位置,及其必要性。

 

一、 当前软件开发的现状分析

 

目前,在我们的软件作坊中,很多程序员在代码开发过程中,都会觉得很多代码都是“重复”的。当然这里所说的“重复”,指的是在代码级别上的重复。也就是说基本的代码架构都是一样的,但参数需要做不同的调整。特别是在数据库开发领域,针对于不同数据表的操作,程序员将需要写很多“重复”的代码。

 

公司内部需求定义代码编写规范,比如名称空间、类、变量等的命名。代码结构的调用规范等问题。公司只能通过文档的形式来要求程序员,执行这个规范。但往往在项目开发的过程中(特别是中后期),项目经理是没有时间和精力来保证程序员的代码规范问题的。他们需要把时间和精力更多的放在项目的需求和功能的设计上。

 

针对于项目的设计模板,一些程序员往往根据自己的经验,把软件设计的相当复杂。看起来好象,非常体现技术含量,但这对软件的维护和升级是很不好的。可以说软件如果没有维护和升级,那注定是失败的软件项目。

 

根据我多年针对于软件项目的开发经验,建议公司对于软件设计过程中保持结构的简单性。这点很重要,这样做将大大提高软件的可维护性。

 

二、亲爱的程序员们在用纯手工编写代码

 

这是最原始的开发方法,只要是程序员,都喜欢这种开发方法。因为,在此种机制中,程序员可以不受任何约束,可以充分展示自己的聪明才智。

 

但对于公司或者说一个同队来讲,这个机制是很不好的。在公司或团队中,更多的需要规范性和可读性,个人的聪明才智相比之下不是那么的重要。因为在项目的开发方法中,一个问题,可能有N多的解决办法,但在公司或团队中,需要的是更容易理解的解决方案。虽然有可能这种解决方案是相对比较愚蠢的。

 

针对于项目经理来讲,不应该把时间和精力放在技术上面,而应该做更好的需求分析和系统设计。这里所讲的系统设计,不是一般意义上的三层或多层架构的设计,而是怎么样更好的实现用户的需求,让用户在软件的使用中,真正觉得软件好用。

 

针对于公司来讲,系统架构设计思路的统一,将有利于项目的维护安全,不会因为项目经理的调离,而没有办法去有效的管理此项目。

 

三、 使用简单的代码生成器(Codematic)

 

Codematic 是一款为 C# 数据库程序员设计的自动代码生成器,Codematic 生成的代码基于基于面向对象的思想和三层架构设计,结合了Petshop中经典的思想和设计模式,融入了工厂模式,反射机制等等一些思想。采用 Model + DAL + BLL + Web 的设计,主要实现在 C# 中对应数据库中表的基类代码的自动生成,包括生成属性、添加、修改、删除、查询、存在性、 Model 类构造等基础代码片断,使程序员可以节省大量机械录入的时间和重复劳动,而将精力集中于核心业务逻辑的开发。 

 

Codematic 同时提供方便的数据库查询管理,SQL脚本生成,存储过程生成,数据库文档生成,Web项目文件发布,代码生成自动导出文件等多项开发工作中常用到的功能,您可以很方便地进行项目开发。

 

总结:

 

使用Codematic时,确实能够在重复的代码编写上节约不少时间。生成代码时,也可根据需要生成二层或三层架构的代码。但生成的代码格式基本一致,程序员不能对模板进行编辑。比如,公司内部需要自己定义一套命名规范或在源代码文件中写入版权信息,此软件就不支持。

另一方面,通过此软件生成的代码需要使用Codematic自带的类库才能正常运行。此种机制,针对与高端软件客户,是很不理想的。因为,我们不能保证,此类库中的代码是安全的。

 

三、 使用自己编写的代码生成器

 

自己编写代码生成器,也是一种解决方案。针对于每个公司自己的特殊情况,来定义自己的代码生成工具。但此种方法,一方面需要自己开发代码生成工具,工作量比较大,另一方面,对于模板定义,很大部分都需要写死在代码生成工具中。因为通过简单的XML定义,是没有办法真正做到代码生成的灵活性。

 

二、 推荐使用更为专业的代码工匠(CodeSmith)

 

CodeSmith是一个基于模板的代码生成器。模板是所生成代码的式样。开发者或架构师可应用CodeSmith来生成任何文本语言的代码。其结果(生成的代码)可通过属性来自定义并包含在众多的标准属性类型之中。另外,用户还可建立自定义的属性类型。

 

CodeSmith实现原理主要可以从以下几点来描述:

 

1、支持执行代码块语法;

通过类似于Asp.Net的语法规范,来定义代码块,将基本不变的部分写死在模板中。模板通过外部定义的属性,来动态的产生需要的代码块。

模板中可以加入公司的版权信息或者代码作者等基本信息。用于后期对代码进行更好的维护。

 

2、支持内联表达式语法;

在模板定义中,可以使用Asp.Net的语法,来定义表达式。通过顺序、判断、循环等基本程序语法,来根据业务逻辑产生需求的代码。

 

3、 支持Code Behind功能;

Code Behind指的是代码分离技术。即在设计模板时,可以将部分逻辑函数写入到通用的类库中。代码生成时,可以通过INCLUDE命令加载这些函数类库。

 

4、 支持属性申明;

通过配置模板的属性,CodeSmith将根据程序员的业务需求,调入外部参数。

 

原创粉丝点击