代碼生成工具選型記錄。codegeneration.net 匯集各平台工具,基於 UML 元數據的 MDA 工具曾風靡一時,但本質是「超級炒冷飯」——模型定義與底層實現落差大,轉換程序工作量巨大,鮮有人願維護。AndroMDA 等退而依賴 UML 靜態類圖+大量 Tagged Value,與 XML 自定義模型無異。
選型標準:XML 格式自定義元數據 + 模板引擎。對比幾種模板方案:
三局兩勝制決勝負:
元數據:
<table>
<column name="id"/>
<column name="name"/>
</table>
FreeMarker 列出所有 column name:
<#list table.* as column>
${column.@name}
Velocity 需用 JDOM API,繁瑣無數倍。代碼生成過程中大量訪問 XML 元數據,此優勢決定性。
雖 JSP 擴展性最強、學習成本最低,但 FreeMarker 內置 XML DOM 支持對代碼生成場景極其關鍵。記錄決策過程供團隊參考——模板引擎選擇本非關鍵,關鍵是元數據模型設計與模板邏輯清晰度。