浅谈基于Razor模板引擎的代码生成器

2017-03-27 14:28谭江山
科技资讯 2017年2期

谭江山

摘 要:目前网络上形形色色的代码生成器很多,但并不适合中小软件企业或个人开发者。使用代码生成器提高工作效率的最好办法是做自己的代码生成器。该文从教学实际项目经验出发,探讨了利用Razor模板引擎生成基于业务模型的软件代码生成器的使用及实践。这将对中小软件企业的软件开发具有指导与借鉴作用。

关键词:代码生成器 模板C# Razor

中图分类号:G64 文献标识码:A 文章编号:1672-3791(2017)01(b)-0042-02

现实中,计算机软件开发企业大多有很多优秀项目的积累,且有很多优秀的代码及规范的代码标准。要延续这些规范和标准,最好的方法是使用代码生成器及进行过程控制。但使用别人的代码生成器,并不一定适合自身企业的特点,也很容易受制于其软件版本的升级。

1 规范的代码在编程中的重要性

目前,有一定技术实力的软件公司都有自己成熟的软件框架,有自己的代码规范,有自己的各项技术要求。因为规范的代码能大大提高编程的工作效率,为企业带来更多的经济和社会效益。计算机软件行业人员流动频繁,若没有一定的代码规范,新员工很难接手老员工的程序代码,需要新员工接受相应培训或由师傅帮带,这无疑增加了企业的运营成本。再者,软件的维护周期内,若没有形成一定的代码规范,不仅增加后期维护的工作量及维护难度,同时也将大大提高维护的成本。对此,无论就企业还是个人而言,形成自己规范的代码是非常重要的。每个程序员都应将自己编码的好习惯、好代码转换为模板,这将大大提高自己的编程效率。如何更好将自己的代码转换为模板呢?这就需要用到代码生成器,代码生成器是将固定不变的代码设计为模板,将变化的部分交给模板引擎去处理。

2 基于Razor模板引擎的代码生成器的特点

目前市场上有很多优秀的代码生成器,如:动软.NET代码自动生成器、AutoCoder自动代码生成器等。尽管这些代码生成器软件都很优秀,但并不适合每个公司或每个人。最好的办法是实现自己的代码生成器。基于.net的模板引擎有很多种,如:NVelocity、Razor、StringTemplate等。经过多年的编程实践,笔者推荐使用Razor引擎。

Razor是和ASPX一样的另一种视图引擎,Razor是作为一种后起的视图模板被ASP.NET MVC3使用,Razor的特点是界面设计灵活,比ASPX视图引擎更专注于WEB前端页面的设计。因为MVC就是基于WEB开发所诞生的一个设计模式,主旨之一就是将页面和业务逻辑解耦。其具有紧凑、富有表现力和流畅、上手快、可以使用任何文本编辑器编写、有很好的智能感应输入提示、便于单元测试等特点。

3 基于Razor模板引擎的代码生成器的使用

我们来看看最简单的Razor模板用法。

该文通过模型类文件和Razor模板文件生成相应的目标代码文件,方案步骤如下(仅以网站项目为例)。

(1)将以往优秀项目的各层,如:表示层、数据访问层、业务逻辑层、控制层、业务(领域)模型层等做成相应的模板(其实所有的文本类型的文件都可以做成模板)。

(2)创建业务(领域)模型类,该业务(领域)模型类可以包含属性、特性、注释等。

(3)利用正则表达式或反射技术,将业务(领域)模型类解析成模板相对应的动态内容,如以上示例代码中的@Model.Name、@Model.Email等。

(4)利用Razor引擎进行解析即可。

这样设计的目的是通过模型类的类名、属性名、特性及注释等,结合编辑页、列表页、业务代码等模板生成对应的目标代码。优秀的代码生成器不是一个代码不用写,而是通过写个性化的代码,生成个性化的目标代码,从而增加灵活性。

4 基于Razor模板引擎的代码生成器的应用实践

筆者经过多年编程实践,已经利用Razor模板引擎开发出了自己的代码生成器,基于asp.net mvc4技术,可在线生成各类界面、Controller类及业务逻辑类,并可打包下载生成的多个文件。

目前该代码生成器已经在笔者的教育系统(市教育局艺术节网上报名系统、学校实习实训平台、学校校园网)等多个团队项目中使用,并取得了良好的经济效益和社会效益。实践证明利用Razor模板引擎技术不仅修改模板方便,生成效率高,而且规范了团队代码编写,大大提高编写代码工作效率和软件质量,同时也产生了良好的经济效益。

参考文献

[1] Razor模板引擎官网[EB/OL].https://github.com/Antaris/RazorEngine.

[2] 郭晓民.基于自动代码生成的WEB业务工具[D].西安电子科技大学,2008.

[3] 王建光.基于模型驱动架构的软件生成技术研究[D].太原理工大学,2007.