專(zhuān)利名稱(chēng):一種程序代碼自動(dòng)生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及支持各種開(kāi)發(fā)語(yǔ)言開(kāi)源框架的一種程序代碼自動(dòng)生成方法。
背景技術(shù):
當(dāng)前軟件開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)人員往往要書(shū)寫(xiě)大量的重復(fù)代碼。例如在目前普遍使用的分層開(kāi)發(fā)模式下對(duì)表進(jìn)行增加、刪除、修改和查詢(xún)操作,都是業(yè)務(wù)層接口向持久層接口進(jìn)行調(diào)用,大部分代碼都是相同的,但是因類(lèi)名等的不同,往往需要在開(kāi)發(fā)過(guò)程中運(yùn)用復(fù)制、粘貼、修改這樣的粘貼式編程方式,不僅繁瑣而且容易出錯(cuò)。而當(dāng)前流行的各種集成開(kāi)發(fā)環(huán)境(IDE)及工具雖然可以智能自動(dòng)生成部分代碼,但由于開(kāi)發(fā)需要和開(kāi)發(fā)框架等的不同,這樣的智能適應(yīng)性仍比較弱。
發(fā)明內(nèi)容
本發(fā)明為克服現(xiàn)有開(kāi)發(fā)過(guò)程中存在的不足之處,目的在于提供一種程序代碼自動(dòng)生成方法,該方法通過(guò)分析當(dāng)前各種開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)框架在開(kāi)發(fā)過(guò)程中的重復(fù)代碼,根據(jù)重復(fù)代碼是有規(guī)則的且可定制的共同特點(diǎn)進(jìn)行設(shè)計(jì),把重復(fù)代碼及規(guī)則定義到模板文件中進(jìn)行自動(dòng)生成,避免了開(kāi)發(fā)人員重復(fù)代碼的編寫(xiě),大大提高了開(kāi)發(fā)效率,解決了現(xiàn)有技術(shù)中存在的問(wèn)題。本發(fā)明是通過(guò)以下技術(shù)方案達(dá)到上述目的一種程序代碼自動(dòng)生成方法,包括功能模板文件編寫(xiě)、生成計(jì)劃定義、參數(shù)定義和生成計(jì)劃執(zhí)行四個(gè)過(guò)程,其中功能模板文件編寫(xiě)過(guò)程包括以下步驟1)按照開(kāi)發(fā)語(yǔ)言的語(yǔ)法編寫(xiě)各功能模板文件內(nèi)容;2)將文件內(nèi)容中發(fā)生變化的部分通過(guò)參數(shù)變量形式進(jìn)行設(shè)置;模板文件是生成最后代碼文件的源頭,編寫(xiě)時(shí)可以將用戶(hù)的開(kāi)發(fā)規(guī)范體現(xiàn)在文本內(nèi)容中;生成計(jì)劃定義過(guò)程定義使用哪個(gè)功能模板文件、參數(shù)定義配置文件以及最終生成的文件存儲(chǔ)地址;生成計(jì)劃可以包含多個(gè)生成任務(wù),一個(gè)生成任務(wù)需要指定模板文件和最終生成的文件的存儲(chǔ)地址。生成計(jì)劃主要定義的內(nèi)容為參數(shù)定義配置文件所在路徑及文件名、模板文件所在路徑及文件名、生成的文件路徑、生成的文件名。生成計(jì)劃中變化的部分通過(guò)參數(shù)變量形式進(jìn)行填寫(xiě),如生成任務(wù)中的文件路徑和文件名均可以用參數(shù)變量,無(wú)須為每次生成不同文件而去改動(dòng)生成計(jì)劃;參數(shù)定義過(guò)程將模板文件及生成計(jì)劃中的參數(shù)變量進(jìn)行值定義并寫(xiě)入?yún)?shù)定義配置文件中,參數(shù)定義配置文件的內(nèi)容為參數(shù)名、參數(shù)值;生成計(jì)劃執(zhí)行過(guò)程包括以下步驟1)從生成計(jì)劃中指定的參數(shù)定義配置文件讀取參數(shù)及對(duì)應(yīng)的值,以參數(shù)集合的形式保存在內(nèi)存中;2)將生成計(jì)劃文件中的參數(shù)與參數(shù)集合中的參數(shù)逐個(gè)進(jìn)行匹配,匹配對(duì)應(yīng)后用參數(shù)定義配置文件中對(duì)應(yīng)的參數(shù)值替換生成計(jì)劃中的參數(shù)部分內(nèi)容,從而得到代碼生成計(jì)劃;3)根據(jù)代碼生成計(jì)劃,找到指定的功能模板文件,然后通過(guò)參數(shù)替換獲得最終的代碼文件內(nèi)容;4)根據(jù)步驟2)得到的生成計(jì)劃中定義的存儲(chǔ)地址和存儲(chǔ)文件名,將生成好的代碼文件保存到電腦硬盤(pán)上。作為優(yōu)選,對(duì)在生成過(guò)程中可能存在變化的地方提供了擴(kuò)展接口,擴(kuò)展接口包括參數(shù)獲取接口和代碼生成方式接口,用戶(hù)可以實(shí)現(xiàn)這些接口,從而改變代碼自動(dòng)生成工具工作方式,其實(shí)現(xiàn)步驟如下1)在生成計(jì)劃文件中配置參數(shù)獲取的實(shí)現(xiàn)類(lèi)、代碼生成的實(shí)現(xiàn)類(lèi);2)從生成計(jì)劃文件中讀取參數(shù)獲取接口的實(shí)現(xiàn)類(lèi),加載執(zhí)行該實(shí)現(xiàn)類(lèi)把參數(shù)及對(duì)應(yīng)的值以參數(shù)集合的形式保存在內(nèi)存中;3)從生成計(jì)劃文件中讀取代碼生成方式接口的實(shí)現(xiàn)類(lèi),加載執(zhí)行該實(shí)現(xiàn)類(lèi)對(duì)生成計(jì)劃文件中的參數(shù)用參數(shù)集合中的對(duì)應(yīng)的參數(shù)值進(jìn)行替換,得到代碼生成計(jì)劃;4)根據(jù)代碼生成計(jì)劃,找到指定的功能模板文件,然后通過(guò)參數(shù)替換獲得最終的代碼文件內(nèi)容;5)根據(jù)步驟幻得到的生成計(jì)劃中定義的存儲(chǔ)地址和存儲(chǔ)文件名,將生成好的代碼文件保存到電腦硬盤(pán)上。本發(fā)明的有益效果本發(fā)明通過(guò)使用開(kāi)發(fā)語(yǔ)言的語(yǔ)法編寫(xiě)的模板文件,使得本發(fā)明能適應(yīng)任何一種開(kāi)發(fā)語(yǔ)言和當(dāng)前各類(lèi)熱門(mén)框架,支持所有開(kāi)發(fā)類(lèi)語(yǔ)言生成(如java、. net、C/C++、perl、python、pb、delphi等等),并且也有能力支撐今后行業(yè)新的開(kāi)發(fā)語(yǔ)言, 能適應(yīng)當(dāng)前任何開(kāi)源/商業(yè)框架、組件及其他中間件技術(shù)(如struts/struts2、spring/ spring-mvc、JSF> Hibernate、swing、Ruby on Rails 等等)。本發(fā)明實(shí)現(xiàn)項(xiàng)目中重復(fù)代碼通過(guò)一次性配置自動(dòng)生成,降低開(kāi)發(fā)工作量,達(dá)到項(xiàng)目快速開(kāi)發(fā)能力;通過(guò)模板定義,和變化部分依靠參數(shù)替換的方式,有效固化了代碼固定部分中不變的地方,使生成的代碼具備規(guī)范性和一致性,從而幫助代碼規(guī)范統(tǒng)一遺傳;通過(guò)靈活的可變的生成計(jì)劃,完全支持了各種語(yǔ)言、中間件或開(kāi)源框架結(jié)構(gòu)的文件存放格式要求; 通過(guò)擴(kuò)展接口的方式,提供用戶(hù)對(duì)代碼自動(dòng)生成工具的定制能力,使之具備更廣的適用性。
圖1是本發(fā)明的系統(tǒng)構(gòu)架示意圖。
具體實(shí)施例方式實(shí)施例1 下面結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步描述,但本發(fā)明的保護(hù)范圍并不僅限于此如圖1所示通過(guò)讀取參數(shù)定義配置文件,將指定參數(shù)值集合替換到生成計(jì)劃指定的模板文件內(nèi)容的參數(shù)變量里,從而獲得最終生成的代碼文件內(nèi)容,并且可以根據(jù)生成計(jì)劃將文件存放在指定目錄里。通過(guò)這種原理,可以很好的支持當(dāng)前所有開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)框架上。代碼生成的主要過(guò)程包括模板文件準(zhǔn)備、生成計(jì)劃定義、參數(shù)定義和生成計(jì)劃執(zhí)行。下面以生成java代碼文件為例,對(duì)發(fā)明提供代碼自動(dòng)生成的具體實(shí)施方式
和過(guò)程進(jìn)行詳細(xì)闡述。(一 )功能模板文件編寫(xiě)模板文件作為代碼生成的內(nèi)容主要來(lái)源,統(tǒng)一存放在代碼自動(dòng)化生成工具主程序文件夾的template目錄中,利用參數(shù)變量(參數(shù)以$開(kāi)頭,參數(shù)名用{}括起來(lái))對(duì)模板內(nèi)容里存在變化的部分進(jìn)行填寫(xiě),模板文件可以按照每個(gè)公司自己的規(guī)范進(jìn)行編寫(xiě)。本例中的模板文件保存在代碼自動(dòng)化生成工具主程序文件夾的template目錄中,文件名為 service, tpl,文件內(nèi)容如下
權(quán)利要求
1.一種程序代碼自動(dòng)生成方法,其特征在于包括功能模板文件編寫(xiě)、生成計(jì)劃定義、參數(shù)定義和生成計(jì)劃執(zhí)行四個(gè)過(guò)程,其中功能模板文件編寫(xiě)過(guò)程包括以下步驟1)按照開(kāi)發(fā)語(yǔ)言的語(yǔ)法編寫(xiě)各功能模板文件內(nèi)容;2)將文件內(nèi)容中發(fā)生變化的部分通過(guò)參數(shù)變量形式進(jìn)行設(shè)置;生成計(jì)劃定義過(guò)程定義使用哪個(gè)功能模板文件、參數(shù)定義配置文件以及最終生成的文件存儲(chǔ)地址;參數(shù)定義過(guò)程將功能模板文件及生成計(jì)劃中的參數(shù)變量進(jìn)行值定義并寫(xiě)入?yún)?shù)定義配置文件中;生成計(jì)劃執(zhí)行過(guò)程包括以下步驟1)從生成計(jì)劃中指定的參數(shù)定義配置文件讀取參數(shù)及對(duì)應(yīng)的值,以參數(shù)集合的形式保存在內(nèi)存中;2)將生成計(jì)劃文件中的參數(shù)與參數(shù)集合中的參數(shù)逐個(gè)進(jìn)行匹配,匹配對(duì)應(yīng)后用參數(shù)定義配置文件中對(duì)應(yīng)的參數(shù)值替換生成計(jì)劃中的參數(shù)部分內(nèi)容,從而得到代碼生成計(jì)劃;3)根據(jù)代碼生成計(jì)劃,找到指定的功能模板文件,然后通過(guò)參數(shù)替換獲得最終的代碼文件內(nèi)容;4)根據(jù)步驟2)得到的生成計(jì)劃中定義的存儲(chǔ)地址和存儲(chǔ)文件名,將生成好的代碼文件保存到電腦硬盤(pán)上。
2.根據(jù)權(quán)利要求1所述的一種程序代碼自動(dòng)生成方法,其特征在于,在生成過(guò)程中存在變化的地方設(shè)置參數(shù)獲取接口和代碼生成方式接口,其實(shí)現(xiàn)步驟如下1)在生成計(jì)劃文件中配置參數(shù)獲取的實(shí)現(xiàn)類(lèi)、代碼生成的實(shí)現(xiàn)類(lèi);2)從生成計(jì)劃文件中讀取參數(shù)獲取接口的實(shí)現(xiàn)類(lèi),加載執(zhí)行該實(shí)現(xiàn)類(lèi)把參數(shù)及對(duì)應(yīng)的值以參數(shù)集合的形式保存在內(nèi)存中;3)從生成計(jì)劃文件中讀取代碼生成方式接口的實(shí)現(xiàn)類(lèi),加載執(zhí)行該實(shí)現(xiàn)類(lèi)對(duì)生成計(jì)劃文件中的參數(shù)用參數(shù)集合中的對(duì)應(yīng)的參數(shù)值進(jìn)行替換,得到代碼生成計(jì)劃;4)根據(jù)代碼生成計(jì)劃,找到指定的功能模板文件,然后通過(guò)參數(shù)替換獲得最終的代碼文件內(nèi)容;5)根據(jù)步驟幻得到的生成計(jì)劃中定義的存儲(chǔ)地址和存儲(chǔ)文件名,將生成好的代碼文件保存到電腦硬盤(pán)上。
3.根據(jù)權(quán)利要求1或2任一權(quán)利要求所述的一種程序代碼自動(dòng)生成方法,其特征在于, 參數(shù)定義配置文件的內(nèi)容為參數(shù)名、參數(shù)值。
全文摘要
本發(fā)明涉及支持各種開(kāi)發(fā)語(yǔ)言開(kāi)源框架的一種程序代碼自動(dòng)生成方法,該方法通過(guò)分析當(dāng)前各種開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)框架在開(kāi)發(fā)過(guò)程中的重復(fù)代碼,根據(jù)重復(fù)代碼是有規(guī)則的且可定制的共同特點(diǎn)進(jìn)行設(shè)計(jì),把重復(fù)代碼及規(guī)則定義到模板文件中進(jìn)行自動(dòng)生成,避免了開(kāi)發(fā)人員重復(fù)代碼的編寫(xiě),大大提高了開(kāi)發(fā)效率,解決了現(xiàn)有技術(shù)中存在的問(wèn)題。
文檔編號(hào)G06F9/44GK102508669SQ20111036154
公開(kāi)日2012年6月20日 申請(qǐng)日期2011年11月14日 優(yōu)先權(quán)日2011年11月14日
發(fā)明者嚴(yán)偉強(qiáng), 李紡, 田文 申請(qǐng)人:浙江鴻程計(jì)算機(jī)系統(tǒng)有限公司