一個Appfuse式的項目,會通過項目里最典型的幾個場景,demo團隊目前的體系框架和設計模式。
它的好處有一打,比如為所有項目提供共同的Library Stack,提供最可靠的代碼藍本,保證大家的模式和代碼風格一致,加快知識在團隊的傳播,方便新人的融入,還有為試驗代碼提供一個穩定簡潔的環境。
所以,一個長期合作的團隊,需要這樣一個MyAppfuse。
但還要有三條鐵的紀律,才能保證辛苦做出來的MyAppFuse不是個寂寞的芭比。
一是強制更新,所有團隊approval的最新模式都要refactor到MyAppfuse中。
二是規范更新,每次更新都要嚴格測試并編寫更新記錄、移植文檔。
三是強制Copy Start,所有代碼都必須從MyAppFuse里Copy而不是隨自己喜歡找任意項目的代碼。
現在開始規劃一個Appfuse式項目。我覺得包含如下Content:
1.設計典型的應用情景。
我平時的ERP項目,最典型的情景莫過于:
*基礎資料管理(如產品資料的CRUD)
*單據管理(如訂單的錄入與管理)
*典型報表
每個場景應該有簡單與復雜兩種模式,方便Developer選用。
場景要仔細設計,盡量演示到所有重要的技術要點。
但場景又要盡量的少,盡量簡潔,減少每次模式升級的成本。
2.挑選出其他比較重要的特性。
如Quartz、ClickStream,也一并放入MyAppFuse中。
3.把所有用到的框架、類庫、瓶瓶罐罐統統打包。
并附上索引和說明作為團隊公用的Library Stack,每次library升級都要認真檢測。
4.編寫文檔。
類似Appfuse的Tutorial,編寫文檔說明各個場景用到的技術要點與模式,說明如何二次開發。
類似Appfuse的Migrate,詳細說明如何升級到MyAppfuse新的版本,促進新模式的傳播。
5.簡單代碼生成工具。
類似Appfuse的AppGen,用Groovy Template或FreeMarker編寫簡單的代碼生成模版。
6.核心的測試用例
后記:這個MyAppfuse終于開源成http://www.springside.org.cn
當然包含單元測試