熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Eclipse工具開發:編寫代碼生成器[1]

2022-06-13   來源: Java開源技術 
    ——此文章摘自《自己動手寫開發工具基於Eclipse的工具開發》定價 特價 詳細>>http://tracklinktechcn/?m_id=dangdang&a_id=A&l=&l_type= width= height= border= nosave>

    計算機的專家們一直在探尋一種能使得重復代碼越來越少的方法函數封裝面向對象AOPMDAORM……所有這些相關或者無關的技術都在試圖將重復的代碼消滅可是一路走過來人們突然發現重復的代碼是不可能被完全消滅的到了更高的層次一定會有更高級的重復的代碼需要我們去對付因此代碼生成也逐漸不再被妖魔化網頁編輯器編譯器IDE等這些非常重要的工具不就是代碼生成器嗎?只要是系統經過好的設計對於剩下的一些重復性的代碼與其使用學院派且嚴重影響性能的方法進行消除不如使用代碼生成器來完成來得更實在一些

    回到現實中來在我們開發程序的過程中特別是開發一些業務系統的過程中一些重復的代碼總是不可避免的比如ORM中POJO代碼和配置文件資料錄入界面的代碼數據庫DDL語句等這些工作如果要開發人員去手動完成話不僅會降低開發效率而且會帶來很多bug最重要的是極容易使得開發人員產生厭倦心理從而消極怠工甚至離職從而提高了項目的人力資源成本增大了項目的風險因此在大一些的開發團隊中都在使用著各種或公開或自釀的代碼生成工具而且越來越多的人開始選擇自釀工具這是因為使用第三方的代碼生成工具往往不能滿足自己的個性化需求

    我們可以通過多種方式來寫代碼生成工具比如最簡單的通過StringBuffer拼字符串或者借助groovy templatevelocity等工具來完成這些工具各有千秋不過由於本書是講解Eclipse的因此我們就來看一下在Eclipse中有哪些代碼生成方案

    使用StringBuffer拼接來生成代碼

    在一些比較簡單的代碼生成中這樣的方式是比較方便的但是當生成的代碼結構變得越來越復雜的時候代碼中stringbufferappend()與邏輯判斷代碼攪和在一起程序變得非常難以維護

    使用JDT API中的AST

    JDT會把 Java代碼編譯成AST(Abstract Syntax Tree 抽象語法樹)這樣復雜的Java代碼就變成了相對簡單的樹狀結構我們就可以通過AST來遍歷Java代碼從而解析代碼或者對代碼進行修改 Eclipse中的Java代碼重構就是基於AST來進行的

    在Eclipse 中AST被稱為CompilationUnit對應的接口就是ICompilationUnit通過Java代碼來生成 CompilationUnit最簡單的方法是使用 IPackageFragmentcreateCompilationUnit指定編譯單元的名稱和內容於是在包中創建了編譯單元並返回新的 ICompilationUnit我們還可以從頭創建一個CompilationUnit即生成一個不依賴於Java代碼的 CompilationUnit然後在這個CompilationUnit上添加類添加方法添加代碼然後調用JDT的AST解析器將 CompilationUnit輸出成Java代碼這種方式是最嚴謹的方式但是當要生成的代碼比較復雜的時候程序就變得臃腫無比而且只能生成 Java代碼不能生成XML配置文件等文件

    使用JET

    JET是 Eclipse中一個非常強大的代碼生成工具使用JET你可以運用類似JSP一樣的語法這樣我們就可以輕松地編寫代碼模板用它可以創建SQL語句 XMLJava源代碼等文件的代碼生成器本書將把它作為代碼生成的工具因此我們在此處重點講解JET的使用JET是EMF的一部分要使用它必須首先安裝EMF插件

    使用JET分為如下幾步

right>[]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  [http://developcsaicn/Java_Eclipse/htm>]  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29014.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.