最近看了一些項目代碼. 一點感想
最近看了一些項目代碼,了解了它得架構和設計。基本上很佩服。因為這些代碼是幾年以前寫的。但是很多書中提到的模式,原則都得到了運用。但是也有一些地方有不同看法,我覺得很多地方用得并不恰當。
1. 濫用繼承。比如在類結構中已經用了模板模式,照理說子類按照需要覆蓋模板中的實現即可。可是不知出于何種目的。有的子類卻是抽象的,需要從該抽象子類再次擴展,導致繼承樹不必要的深。
2. 濫用接口。經常看到接口中定義了一堆的方法,而且該接口只有一種實現。這種接口純粹是擺設,這樣的接口根本不能指望它有穩定性。實際情況是接口將隨著實現的改變而改變。你說要這樣的接口干嗎?
3. 喜歡抽象出框架,但是這些框架對于當前的應用來說真實不必要的復雜。事實上沒有增加重用,反而降低了代碼的可讀性。
4. 濫用工廠模式。大家不是覺得模式很難實際運用嗎。真想用模式嗎?那還不簡單。給每個對象都定義一個工廠類不就的了嗎?說心里話,我真看不出那些工廠模式到底實現什么設計上的好處。
5. 抽象的能力不夠。在一個分頁的實現中。把查尋字符串抽象到了一個類中。正確的方法應該是把查詢結果抽象出來。
項目在進化的過程中很容易變得越來越難維護,畢竟很多不同的思想和不同人的代碼揉和到了一起。出現各種問題也是正常的。
希望在別的項目中能引以為戒。
1. 濫用繼承。比如在類結構中已經用了模板模式,照理說子類按照需要覆蓋模板中的實現即可。可是不知出于何種目的。有的子類卻是抽象的,需要從該抽象子類再次擴展,導致繼承樹不必要的深。
2. 濫用接口。經常看到接口中定義了一堆的方法,而且該接口只有一種實現。這種接口純粹是擺設,這樣的接口根本不能指望它有穩定性。實際情況是接口將隨著實現的改變而改變。你說要這樣的接口干嗎?
3. 喜歡抽象出框架,但是這些框架對于當前的應用來說真實不必要的復雜。事實上沒有增加重用,反而降低了代碼的可讀性。
4. 濫用工廠模式。大家不是覺得模式很難實際運用嗎。真想用模式嗎?那還不簡單。給每個對象都定義一個工廠類不就的了嗎?說心里話,我真看不出那些工廠模式到底實現什么設計上的好處。
5. 抽象的能力不夠。在一個分頁的實現中。把查尋字符串抽象到了一個類中。正確的方法應該是把查詢結果抽象出來。
項目在進化的過程中很容易變得越來越難維護,畢竟很多不同的思想和不同人的代碼揉和到了一起。出現各種問題也是正常的。
希望在別的項目中能引以為戒。
posted on 2006-03-31 21:36 InPractice 閱讀(211) 評論(0) 編輯 收藏