《重構與模式(修訂版)》 第1章1 1節過度設計

2021-09-23 16:39:48 字數 1240 閱讀 8696

第1章 本書的寫作緣由

重構與模式(修訂版)

軟體模式的偉大之處,就在於它們傳達了許多有用的設計思想。所以,在學習了大量模式之後,就理應成為非常優秀的軟體設計人員,不是嗎?當學習、使用了幾十個模式後,我也曾這樣認為。模式幫助我開發靈活的框架,幫助我構建堅固、可擴充套件的軟體系統。但是幾年後,我卻發現自己在模式方面的知識和使用模式的方式總是使我在工作中犯過度設計的錯誤。

設計技術進一步提高之後,我發現自己使用模式的方式逐漸發生了變化:我開始「通過重構實現模式、趨向模式和去除模式(refactoring to,towards,and away from pattern)」,而不再是在預先(up-front)設計中使用模式,也不再過早地在**中加入模式。這種使用模式的新方式來自於我對極限程式設計(xp)設計實踐的採用,它幫助我既避免了過度設計,又不至於設計不足。

1.1 過度設計

重構與模式(修訂版)

所謂過度設計(over-engineering),是指**的靈活性和複雜性超出所需。有些程式設計師之所以這樣做,是因為他們相信自己知曉系統未來的需求。他們推斷,最好今天就把方案設計得更靈活、更複雜,以適應明天的需求。這聽上去很合理,但是別忘了,這需要你未卜先知。

如果預計錯誤,浪費的將是寶貴的時間和金錢。花費幾天甚至幾星期對設計方案進行微調,僅僅為了增加過度的靈活性或者不必要的複雜性,這種情況並不罕見,而且這樣只會減少用來新增新功能、排除系統缺陷的時間。

如果預期中的需求根本不會成為現實,那麼按此編寫的**又將怎樣呢?刪除是不現實的。刪除這些**並不方便,何況我們還指望著有一天它們能派上用場呢。無論原因如何,隨著過度靈活、過分複雜的**的堆積,你和團隊中的其他程式設計師,尤其是那些新成員,就得在毫無必要的更龐大、更複雜的**基礎上工作了。

為了避免這一問題,人們決定分頭負責系統的各個部分。這看似能使工作更容易,但是***又產生了。因為每個人都在自己的小天地裡工作,很少看看別處的**是否已經完成了自己需要的功能,最後生成大量重複的**。

過度設計下的**會影響生產率,因為當其他人接手乙個過度設計的方案時,必須先花上一些時間了解設計中的許多微妙之處,然後才能自如地擴充套件或者維護它。

過度設計總在不知不覺之**現,許多架構師和程式設計師在進行過度設計時甚至自己都不曾意識到。而當公司發現團隊的生產率下降時,又很少有人知道是過度設計在作怪。

程式設計師之所以會過度設計,也許是因為他們不想受不良設計的羈絆。不良的設計可能會深深地融入**之中,對其進行改進不啻嚴峻的挑戰。我遇到過這種情況,所以使用模式預先進行設計對我的吸引力才會如此之大。

《團隊軟體過程(修訂版)》 第1章1 7節小結

1.7 小結 團隊軟體過程 修訂版 tspi的4個基本原則如下。1 當學生遵循明確定義的 可重複的工作步驟並且能及時獲得反饋時,學習效率是最高的。2 產生高效的團隊協作需要明確定義的團隊目標 高效的工作環境 有效的指導和強有力的領導。3 當學生經歷了實際開發專案,並在指導下有效解決了所遇到的問題,他...

《程式設計珠璣(第2版 修訂版)》 第2章2 4節排序

2.4 排序 現在我們來討論問題c。給定一本英語單詞字典 每個輸入行是乙個由小寫字母組成的單詞 要求找出所有的變位詞分類。研究這個問題可以舉出許多理由。首先是技術上的 獲得這個問題的解決方案需要既具有正確的視角又能使用正確的工具。第二個理由更具有說服力 你總不想成為聚會中唯一乙個不知道 deposi...

《SAP入門經典(第4版 修訂版)》 導讀

為了達到簡明易懂的目的,我對內容的結構重新進行了安排,劃分成了5個部分。第一部分從介紹各種基本概念開始本書,第二部分覆蓋了sap的商業應用和元件。之後,順理成章地先讓我們從企業使用者的角度了解sap 第三部分 然後從it專業人員的角度深入分析 第四部分 為了介紹最近5年出現的新知識和新焦點,以及回應...