軟體工程管理的一點經驗之工程構建

趙年峰發表於2014-11-03

估計這個會寫一系列,暫時先寫一篇試試水,裡面沒有過多的教科書經驗,都是些經驗,大家可以看成草根經驗吧,有認為不對的地方,大家可以發郵件給我 mailto:ttch007@sina.com,直接評論我的回覆時效性非常低。

工程構建

這個題目比較大,我們現在不說客戶需求,直接談程式的工程構建,各個公司都有自己的構建,但我只是說一些基本的非技術專案問題(比如某個API怎麼調,某個效果怎麼生成,某個介面怎麼呼叫另一個介面,模式窗體和非模式窗體的問題,好吧,我在挑釁程式設計師的技術能力,但確實我碰到了不少程式設計師認為這是個技術問題,我只能說你沒看過API文件和DEMO。。。別和我爭論,真是這樣的情況。。。)

壞的工程是什麼樣呢? 這個議題提出來比較合適,我簡單列舉幾點,也許大家都能說出來,但我說幾個經典的我個人覺得就夠了,嘿嘿。

  1. 工程目錄名稱不準確,目錄結構比較散亂,重複目錄非常多。

  2. 函式重複功能過多,無法形成庫共用。

  3. 無用類和函式過多。

  4. 系統模型亂,應該寫到View 中的程式碼寫到了Controller和Model裡了,應該寫到後端Controller中的程式碼寫到了前端了,應該Mapper中SQL處理的邏輯,寫到了Services裡了,配置標籤混亂,沒有形成統一化,比如Annotation和配置沒有弄清楚怎麼分配幹活。

問題1的目錄如下

--utils
----web
------views
--------commons
------utils
--commons
--helps

其實針對上面的問題。很好處理。

第一使用一個比較好的重構軟體,進行重構,這個時間和週期不會很長,個人經歷,3萬行的重構和30萬行的重構技術確認週期很接近,只是對應的體力活時間不一樣,推薦intellij,十分強大,可以解決1,2,3的問題。

第二,模型整理和Controller端的用語模型需要整理,比如:

  1. 處理過濾,那麼需要建立一個HelperClass來進行來處理過濾部分,首先可以分析模式,是否可以進行迴圈的部分,來進行設計迴圈過濾的模型,參見RUBY和python中的程式碼過濾方式可以找到比較簡潔的處理過濾方式,也可以參考Lingo裡面的方式進行整理,然後文件化,形成文件庫,強制程式設計師進行參考開發,不允許自己寫特殊模型函式。

  2. 特殊業務邏輯,進行拆分分裝,比如原來都一大堆寫在Controller中的程式碼,那麼我們需要把他一步一步的封裝術語,這個可以用漢字拼音也可以用英文+漢字拼音,也可以都用英文,根據本地化專案的習慣而定。

    比如:我要新增一張保單:先接收前端的訊息資料,檢測資料和判斷條件,處理資料,儲存資料,返回結果。這是一個大的示例,具體小的可以按照對應的層次分成不同的靜態函式類(按技術和業務分成:技術Helper類,和業務基礎函式和局域函式。

    然後形成一套基礎用語表,定義維護更新(當然沒有也可以,大家都看得懂,但這樣傳承是個問題,除非團隊比較穩定)。

以上經過整理過的程式碼,如果得到後期的精心維護是可以讓程式設計師和系統順利的得到實施和傳承的,最好可以通過gendoc方式生成文件,通過查詢的方式來提供找到合適的API。且多個專案是可以進行共享基礎庫的。這樣極大的節省了開發成本。

相關文章