低劣的設(shè)計(jì),會(huì)使你走向泥潭,難以自拔
我進(jìn)這個(gè)公司一年多一點(diǎn)了.剛進(jìn)公司沒什么事做,所以經(jīng)理就讓做一個(gè)小系統(tǒng),為公司以后的需求作準(zhǔn)備.
為了快速的完成任務(wù),我也就沒有多考慮用最簡單,傳統(tǒng)的方式(jsp + javaBean)很快完成了項(xiàng)目.系統(tǒng)經(jīng)過測試員測試通過 這樣我才放心了.
現(xiàn)在公司準(zhǔn)備上線系統(tǒng),這下可把我害慘了.系統(tǒng)寫了一年左右了,用戶的需求我都不記得了.此時(shí),用戶又對系統(tǒng)提出了新的需求,要求修改.我沒有辦法,系統(tǒng)是我寫的,那么更新維護(hù)自然也是我的事情了.我只有拿出原來的文檔,重新整理思路,才把相關(guān)的需求回想起來.隨著時(shí)間的推移,經(jīng)驗(yàn)的積累,看到自己寫的那些代碼實(shí)在是難以忍受.現(xiàn)在要維護(hù)系統(tǒng)了,感覺是牽一發(fā)動(dòng)全身,真是糟糕透了.當(dāng)時(shí)寫出系統(tǒng)時(shí)還沾沾自喜,自己又搞定一個(gè)系統(tǒng),很有成就感的.現(xiàn)在我看你還牛到那去.
回頭再審視自己做的設(shè)計(jì),寫的代碼. 發(fā)現(xiàn)了不少問題.
1)層次混亂.我們經(jīng)常說的表示層,業(yè)務(wù)邏輯層,持久層相互高耦合,沒有一個(gè)清晰的分層.系統(tǒng)的架構(gòu)應(yīng)當(dāng)采用現(xiàn)在流行的框架.比如說
表示層用webwork,struts,spring mvs,jsf等等,
業(yè)務(wù)層(事務(wù)管理,,,)spring
持久層用hibernate,iBatis,,,,
2)沒有面向接口編程.整個(gè)系統(tǒng)中沒有見到一個(gè)接口.我還停留在面向類的編程.養(yǎng)成良好的編程習(xí)慣.
oop,aop讓你的系統(tǒng)有好的維護(hù)性,擴(kuò)展性
3)業(yè)務(wù)實(shí)現(xiàn)細(xì)節(jié),性能上存在問題.比如說:對基本信息的修改實(shí)現(xiàn)方式真糟糕.因?yàn)榛拘畔⒌膶傩杂?0多個(gè),它和另一個(gè)表是一對多的
關(guān)聯(lián)關(guān)系. 當(dāng)時(shí)覺得那么多屬性,懶得用update一個(gè)一個(gè)得來更新,干脆把相關(guān)得信息(包括它關(guān)聯(lián)的另一個(gè)表的信息)刪除掉.這樣造成了很多不
必要的操作麻煩.你修改基本信息,為什么要去刪除它關(guān)聯(lián)表的信息,然后又要把它的信息添加進(jìn)來.這不就是畫蛇添足嗎?先刪除,然后又添加,
一些不必要的操作,造成了性能的下降.系統(tǒng)的開發(fā)遵循簡單的設(shè)計(jì).
4)業(yè)務(wù)操作混淆.添加新的基本信息與更新基本信息都放在同一個(gè)方法中.每一個(gè)業(yè)務(wù)方法對應(yīng)一個(gè)操作.
5)系統(tǒng)不穩(wěn)定.對系統(tǒng)要有好的單元測試,集成測試.
6)用戶操作不方便.要站在用戶的角度多考慮,那樣的操作是他們習(xí)慣的,他們想要的.
這樣的系統(tǒng)真是糟糕,難以維護(hù),難以擴(kuò)展,很難有好的性能.
我們開發(fā)的系統(tǒng)不能滿足于夠用,做出的系統(tǒng)要有好的可維護(hù),可重用,可擴(kuò)展性.
posted on 2006-01-05 17:19
Harryson 閱讀(304)
評論(0) 編輯 收藏 所屬分類:
SoftwareEngineering