譚江山
摘 要:目前網(wǎng)絡(luò)上形形色色的代碼生成器很多,但并不適合中小軟件企業(yè)或個人開發(fā)者。使用代碼生成器提高工作效率的最好辦法是做自己的代碼生成器。該文從教學實際項目經(jīng)驗出發(fā),探討了利用Razor模板引擎生成基于業(yè)務(wù)模型的軟件代碼生成器的使用及實踐。這將對中小軟件企業(yè)的軟件開發(fā)具有指導(dǎo)與借鑒作用。
關(guān)鍵詞:代碼生成器 模板C# Razor
中圖分類號:G64 文獻標識碼:A 文章編號:1672-3791(2017)01(b)-0042-02
現(xiàn)實中,計算機軟件開發(fā)企業(yè)大多有很多優(yōu)秀項目的積累,且有很多優(yōu)秀的代碼及規(guī)范的代碼標準。要延續(xù)這些規(guī)范和標準,最好的方法是使用代碼生成器及進行過程控制。但使用別人的代碼生成器,并不一定適合自身企業(yè)的特點,也很容易受制于其軟件版本的升級。
1 規(guī)范的代碼在編程中的重要性
目前,有一定技術(shù)實力的軟件公司都有自己成熟的軟件框架,有自己的代碼規(guī)范,有自己的各項技術(shù)要求。因為規(guī)范的代碼能大大提高編程的工作效率,為企業(yè)帶來更多的經(jīng)濟和社會效益。計算機軟件行業(yè)人員流動頻繁,若沒有一定的代碼規(guī)范,新員工很難接手老員工的程序代碼,需要新員工接受相應(yīng)培訓(xùn)或由師傅幫帶,這無疑增加了企業(yè)的運營成本。再者,軟件的維護周期內(nèi),若沒有形成一定的代碼規(guī)范,不僅增加后期維護的工作量及維護難度,同時也將大大提高維護的成本。對此,無論就企業(yè)還是個人而言,形成自己規(guī)范的代碼是非常重要的。每個程序員都應(yīng)將自己編碼的好習慣、好代碼轉(zhuǎn)換為模板,這將大大提高自己的編程效率。如何更好將自己的代碼轉(zhuǎn)換為模板呢?這就需要用到代碼生成器,代碼生成器是將固定不變的代碼設(shè)計為模板,將變化的部分交給模板引擎去處理。
2 基于Razor模板引擎的代碼生成器的特點
目前市場上有很多優(yōu)秀的代碼生成器,如:動軟.NET代碼自動生成器、AutoCoder自動代碼生成器等。盡管這些代碼生成器軟件都很優(yōu)秀,但并不適合每個公司或每個人。最好的辦法是實現(xiàn)自己的代碼生成器。基于.net的模板引擎有很多種,如:NVelocity、Razor、StringTemplate等。經(jīng)過多年的編程實踐,筆者推薦使用Razor引擎。
Razor是和ASPX一樣的另一種視圖引擎,Razor是作為一種后起的視圖模板被ASP.NET MVC3使用,Razor的特點是界面設(shè)計靈活,比ASPX視圖引擎更專注于WEB前端頁面的設(shè)計。因為MVC就是基于WEB開發(fā)所誕生的一個設(shè)計模式,主旨之一就是將頁面和業(yè)務(wù)邏輯解耦。其具有緊湊、富有表現(xiàn)力和流暢、上手快、可以使用任何文本編輯器編寫、有很好的智能感應(yīng)輸入提示、便于單元測試等特點。
3 基于Razor模板引擎的代碼生成器的使用
我們來看看最簡單的Razor模板用法。
該文通過模型類文件和Razor模板文件生成相應(yīng)的目標代碼文件,方案步驟如下(僅以網(wǎng)站項目為例)。
(1)將以往優(yōu)秀項目的各層,如:表示層、數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層、控制層、業(yè)務(wù)(領(lǐng)域)模型層等做成相應(yīng)的模板(其實所有的文本類型的文件都可以做成模板)。
(2)創(chuàng)建業(yè)務(wù)(領(lǐng)域)模型類,該業(yè)務(wù)(領(lǐng)域)模型類可以包含屬性、特性、注釋等。
(3)利用正則表達式或反射技術(shù),將業(yè)務(wù)(領(lǐng)域)模型類解析成模板相對應(yīng)的動態(tài)內(nèi)容,如以上示例代碼中的@Model.Name、@Model.Email等。
(4)利用Razor引擎進行解析即可。
這樣設(shè)計的目的是通過模型類的類名、屬性名、特性及注釋等,結(jié)合編輯頁、列表頁、業(yè)務(wù)代碼等模板生成對應(yīng)的目標代碼。優(yōu)秀的代碼生成器不是一個代碼不用寫,而是通過寫個性化的代碼,生成個性化的目標代碼,從而增加靈活性。
4 基于Razor模板引擎的代碼生成器的應(yīng)用實踐
筆者經(jīng)過多年編程實踐,已經(jīng)利用Razor模板引擎開發(fā)出了自己的代碼生成器,基于asp.net mvc4技術(shù),可在線生成各類界面、Controller類及業(yè)務(wù)邏輯類,并可打包下載生成的多個文件。
目前該代碼生成器已經(jīng)在筆者的教育系統(tǒng)(市教育局藝術(shù)節(jié)網(wǎng)上報名系統(tǒng)、學校實習實訓(xùn)平臺、學校校園網(wǎng))等多個團隊項目中使用,并取得了良好的經(jīng)濟效益和社會效益。實踐證明利用Razor模板引擎技術(shù)不僅修改模板方便,生成效率高,而且規(guī)范了團隊代碼編寫,大大提高編寫代碼工作效率和軟件質(zhì)量,同時也產(chǎn)生了良好的經(jīng)濟效益。
參考文獻
[1] Razor模板引擎官網(wǎng)[EB/OL].https://github.com/Antaris/RazorEngine.
[2] 郭曉民.基于自動代碼生成的WEB業(yè)務(wù)工具[D].西安電子科技大學,2008.
[3] 王建光.基于模型驅(qū)動架構(gòu)的軟件生成技術(shù)研究[D].太原理工大學,2007.