[轉貼] 快速構建XOOPS模組的思路探討
@ncnynl
@20080403
摘要:
本文意在解決以下的問題:
如何避免模組開發中的重複勞動?
有哪些自動生成工具呢?
如何建立滿足需求的生成器?
如何避免模組開發中的重複勞動?
重複勞動和時間浪費
首先遇到的問題是重複勞動在那產生及它的後果是什麼。開發過Xoops模組的程式師應該知道,構建模組目錄和檔大概的方法有兩個:邊做邊建或複製修改。
邊做邊建,就是根據需求自己去建立這個檔,基本上模組需要的哪些基礎 都是手工一個一個加起來的。
複製修改,就是把一個現有的模組作為範本,複製修改從而得到一個新模組的基礎檔。或許後面的方法稍微聰明一點,不過也都是不同程度的重複了勞動。
那真正可怕的地方是那呢? 假如,你一次要寫100個模組,你利用上面的方法,你能想像得出來,你要怎麼做麼? 我自己就感覺到心驚膽跳,這已經不是單純的體力勞動,簡直就是折磨啊。算一下時間的帳,100個模組,平均開發時間是每個模組1個月,那麼就是100個月。那麼每個模組基礎範本和檔建立估計也要20分鐘,那麼就是單為了建立一個模組的基礎目錄和檔就要浪費掉2000分鐘也就30個小時,如果工作時間是8小時,那就是4天半的時間.怎麼樣,你認為你累計浪費的時間是多還是少呢?
避免時間浪費和提高效率
知道了重複勞動及浪費的時間,那接下來就是要解決怎麼樣去避免或減少重複勞動以及所帶來的時間浪費。
一個有效的方法就是,讓這些重複性的工作批量完成或者說自動完成。以上面的例子說明,100個模組我就只需要幾分鐘的就能生成,然後模組裏面的邏輯的實現,就程式再去實現,因為那個已經沒有方法去自動完成了。好了,對比之下,很明顯,我們應該建立一套好的自動完成的工具來減少大量的重複性工作,避免時間的浪費,提高效率。
有哪些自動生成工具呢?
利用自動生成工具的項目
已經有很多專案都已經應用這些理念或作法來提高效率。Eclipse編輯器嵌入了Ant生成器;symfony項目嵌入了一個羽量級生成器;Propel嵌入了Phing生成器。 可見,優秀的項目裏面都提供這些優化開發過程的自動生成工具,為何我們不使用呢?
自動生成工具
Ant 這個來自apache項目裏面的一個子項目,在eclipse也集成這個自動生成功能,它根據配置檔來生成所需要的檔和目錄。
PHing 基於Ant專案的,利用PHP來開發的自動生成工具
如何建立滿足需求的生成器?
生成器需求
基本的需求是根據配置自動生成整個模組的目錄和檔結構,根據配置自動生成資料庫SQL檔和類生成。深入的需求是能根據配置自動生成測試類檔,代碼文檔等等。
總結需求如下:
1. 標準的模組結構範本
2. 獨立生成類檔
3. 獨立生成SQL檔
4. 獨立生成前臺檔
5. 獨立生成後臺檔
6. 能不同的XML配置來建立不同的模組標準,用戶可以根據自己的喜好選擇或建立自己的模組標準範本.
設計生成器
這個生成器首先是考慮現有模組的特點,模組風格是可變點,也就是可建立不同模組標準。
簡要設計如下:
1. 通過現有的目錄和檔範本替代的方式生成新的模組目錄和檔
2. 根據SQL XML資料結構檔生成類檔、前臺、後臺對應的檔
3. 使用XSLT2.0強大的範本功能,通過源模型採用三級結構模式生成類檔和SQL檔
‧1. Abstract Model -> SQL Model -> SQL
‧2. Abstract Model -> Database Access Model -> PHP
4. 生成過程:
‧1. 通過配置檔,利用PHing生成目錄結構及基本檔
‧2. 通過配置檔,利用PHing調用AltovaXML來生成類檔和SQL檔
http://xoops.org.cn/modules/newbb/viewtopic.php?topic_id=15221&forum=49