国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談基于Razor模板引擎的代碼生成器

2017-03-27 14:28:42譚江山
科技資訊 2017年2期

譚江山

摘 要:目前網(wǎng)絡(luò)上形形色色的代碼生成器很多,但并不適合中小軟件企業(yè)或個(gè)人開(kāi)發(fā)者。使用代碼生成器提高工作效率的最好辦法是做自己的代碼生成器。該文從教學(xué)實(shí)際項(xiàng)目經(jīng)驗(yàn)出發(fā),探討了利用Razor模板引擎生成基于業(yè)務(wù)模型的軟件代碼生成器的使用及實(shí)踐。這將對(duì)中小軟件企業(yè)的軟件開(kāi)發(fā)具有指導(dǎo)與借鑒作用。

關(guān)鍵詞:代碼生成器 模板C# Razor

中圖分類號(hào):G64 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2017)01(b)-0042-02

現(xiàn)實(shí)中,計(jì)算機(jī)軟件開(kāi)發(fā)企業(yè)大多有很多優(yōu)秀項(xiàng)目的積累,且有很多優(yōu)秀的代碼及規(guī)范的代碼標(biāo)準(zhǔn)。要延續(xù)這些規(guī)范和標(biāo)準(zhǔn),最好的方法是使用代碼生成器及進(jìn)行過(guò)程控制。但使用別人的代碼生成器,并不一定適合自身企業(yè)的特點(diǎn),也很容易受制于其軟件版本的升級(jí)。

1 規(guī)范的代碼在編程中的重要性

目前,有一定技術(shù)實(shí)力的軟件公司都有自己成熟的軟件框架,有自己的代碼規(guī)范,有自己的各項(xiàng)技術(shù)要求。因?yàn)橐?guī)范的代碼能大大提高編程的工作效率,為企業(yè)帶來(lái)更多的經(jīng)濟(jì)和社會(huì)效益。計(jì)算機(jī)軟件行業(yè)人員流動(dòng)頻繁,若沒(méi)有一定的代碼規(guī)范,新員工很難接手老員工的程序代碼,需要新員工接受相應(yīng)培訓(xùn)或由師傅幫帶,這無(wú)疑增加了企業(yè)的運(yùn)營(yíng)成本。再者,軟件的維護(hù)周期內(nèi),若沒(méi)有形成一定的代碼規(guī)范,不僅增加后期維護(hù)的工作量及維護(hù)難度,同時(shí)也將大大提高維護(hù)的成本。對(duì)此,無(wú)論就企業(yè)還是個(gè)人而言,形成自己規(guī)范的代碼是非常重要的。每個(gè)程序員都應(yīng)將自己編碼的好習(xí)慣、好代碼轉(zhuǎn)換為模板,這將大大提高自己的編程效率。如何更好將自己的代碼轉(zhuǎn)換為模板呢?這就需要用到代碼生成器,代碼生成器是將固定不變的代碼設(shè)計(jì)為模板,將變化的部分交給模板引擎去處理。

2 基于Razor模板引擎的代碼生成器的特點(diǎn)

目前市場(chǎng)上有很多優(yōu)秀的代碼生成器,如:動(dòng)軟.NET代碼自動(dòng)生成器、AutoCoder自動(dòng)代碼生成器等。盡管這些代碼生成器軟件都很優(yōu)秀,但并不適合每個(gè)公司或每個(gè)人。最好的辦法是實(shí)現(xiàn)自己的代碼生成器?;?net的模板引擎有很多種,如:NVelocity、Razor、StringTemplate等。經(jīng)過(guò)多年的編程實(shí)踐,筆者推薦使用Razor引擎。

Razor是和ASPX一樣的另一種視圖引擎,Razor是作為一種后起的視圖模板被ASP.NET MVC3使用,Razor的特點(diǎn)是界面設(shè)計(jì)靈活,比ASPX視圖引擎更專注于WEB前端頁(yè)面的設(shè)計(jì)。因?yàn)镸VC就是基于WEB開(kāi)發(fā)所誕生的一個(gè)設(shè)計(jì)模式,主旨之一就是將頁(yè)面和業(yè)務(wù)邏輯解耦。其具有緊湊、富有表現(xiàn)力和流暢、上手快、可以使用任何文本編輯器編寫(xiě)、有很好的智能感應(yīng)輸入提示、便于單元測(cè)試等特點(diǎn)。

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

我們來(lái)看看最簡(jiǎn)單的Razor模板用法。

該文通過(guò)模型類文件和Razor模板文件生成相應(yīng)的目標(biāo)代碼文件,方案步驟如下(僅以網(wǎng)站項(xiàng)目為例)。

(1)將以往優(yōu)秀項(xiàng)目的各層,如:表示層、數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、控制層、業(yè)務(wù)(領(lǐng)域)模型層等做成相應(yīng)的模板(其實(shí)所有的文本類型的文件都可以做成模板)。

(2)創(chuàng)建業(yè)務(wù)(領(lǐng)域)模型類,該業(yè)務(wù)(領(lǐng)域)模型類可以包含屬性、特性、注釋等。

(3)利用正則表達(dá)式或反射技術(shù),將業(yè)務(wù)(領(lǐng)域)模型類解析成模板相對(duì)應(yīng)的動(dòng)態(tài)內(nèi)容,如以上示例代碼中的@Model.Name、@Model.Email等。

(4)利用Razor引擎進(jìn)行解析即可。

這樣設(shè)計(jì)的目的是通過(guò)模型類的類名、屬性名、特性及注釋等,結(jié)合編輯頁(yè)、列表頁(yè)、業(yè)務(wù)代碼等模板生成對(duì)應(yīng)的目標(biāo)代碼。優(yōu)秀的代碼生成器不是一個(gè)代碼不用寫(xiě),而是通過(guò)寫(xiě)個(gè)性化的代碼,生成個(gè)性化的目標(biāo)代碼,從而增加靈活性。

4 基于Razor模板引擎的代碼生成器的應(yīng)用實(shí)踐

筆者經(jīng)過(guò)多年編程實(shí)踐,已經(jīng)利用Razor模板引擎開(kāi)發(fā)出了自己的代碼生成器,基于asp.net mvc4技術(shù),可在線生成各類界面、Controller類及業(yè)務(wù)邏輯類,并可打包下載生成的多個(gè)文件。

目前該代碼生成器已經(jīng)在筆者的教育系統(tǒng)(市教育局藝術(shù)節(jié)網(wǎng)上報(bào)名系統(tǒng)、學(xué)校實(shí)習(xí)實(shí)訓(xùn)平臺(tái)、學(xué)校校園網(wǎng))等多個(gè)團(tuán)隊(duì)項(xiàng)目中使用,并取得了良好的經(jīng)濟(jì)效益和社會(huì)效益。實(shí)踐證明利用Razor模板引擎技術(shù)不僅修改模板方便,生成效率高,而且規(guī)范了團(tuán)隊(duì)代碼編寫(xiě),大大提高編寫(xiě)代碼工作效率和軟件質(zhì)量,同時(shí)也產(chǎn)生了良好的經(jīng)濟(jì)效益。

參考文獻(xiàn)

[1] Razor模板引擎官網(wǎng)[EB/OL].https://github.com/Antaris/RazorEngine.

[2] 郭曉民.基于自動(dòng)代碼生成的WEB業(yè)務(wù)工具[D].西安電子科技大學(xué),2008.

[3] 王建光.基于模型驅(qū)動(dòng)架構(gòu)的軟件生成技術(shù)研究[D].太原理工大學(xué),2007.

防城港市| 武乡县| 吉安市| 枣阳市| 德清县| 车险| 莱芜市| 樟树市| 柘城县| 阿克陶县| 桐柏县| 青阳县| 屏山县| 云梦县| 南投市| 平顺县| 武安市| 沁阳市| 明水县| 江山市| 大洼县| 贡觉县| 彰化县| 临夏县| 新干县| 江安县| 玉田县| 柞水县| 驻马店市| 曲阜市| 永清县| 安仁县| 卓尼县| 深州市| 天镇县| 崇义县| 长沙市| 罗定市| 喀什市| 云南省| 离岛区|