物件導向健身操 九步邁向優秀軟體設計

2021-06-16 04:17:35 字數 1503 閱讀 7856

本文內容來自《軟體開發沉思錄》

優秀設計背後的七條核心概念:內聚性,松耦合,零重複,封裝,可測試性,可讀性,單一職責。

採用這些規則的關鍵是,使用物件導向的思考。

動機:龐大的方法往往缺少內聚性,乙個常見的原則是將方法控制著5

行以內(不包括入參檢查)。你可以嘗試讓每個方法只做一件事情——每個方法只保護乙個控制結構或乙個**塊。

方法:利用ide

的抽取方法的功能,不斷的抽取方法中的行為,直到乙個方法只有一級縮排位置。

「運用這些規則的技能師一種藝術,它能將程式設計師提公升到乙個新的高度。」

動機:複雜的條件判決難於理解,而且易產生重複**。 方法

:對於簡單判斷可以使用衛語句和提前返回,對於複雜的條件判斷則可以使用多型。另外也可以使用策略模式。

動機:整數只是代表乙個數量,沒有實際的含義。用類來表示原生型別,比如年,月,日等。這樣可以進行嚴格的型別檢查。

動機:如果一行中含有多個「.

」,則說明很多職責的位置放置錯了。嘗試讓物件為你做一些事情,而不要窺視物件內部的細節。封裝的含義就是,不要讓類的邊界跨入到它不應該知道的型別中。

動機:縮寫的原因:1

)一遍一遍的敲打同樣的單詞,則可能是因為某個方法呼叫過於頻繁——要消除一下重複。

2)方法名字太長——可能是職責沒有放在應該在的位置或者有確實的類。

方法:所有實體物件的名稱都只能包含一到兩個單詞,不要使用縮寫。

動機:超過50

行的類所做的事情通常都不止乙個。這會導致他們難以理解和重用。這意味著每個類的長度不能超過

50行。每個包所包含的檔案不超過

10個。

動機:將乙個物件從擁有大量屬性的狀態,解構成分層次的,相互關聯的多個物件,會直接產生乙個更實用的物件模型。將乙個複雜的大的物件,分解成多個簡單的物件。 方法

集合的概念應該是一類例項的集合。比如,定時器物件的集合——包括所有的定時器。我一般是放在定時器類中,然後使用static

來表示集合。看了這個方法要改一下了。

任何包含集合的類都不能再包含其他的成員變數。每個集合都被封裝在自己的類中。集合其實是一種應用廣泛的原生型別。

geter/setter/proerty會對物件的封裝性找出破壞。

在嚴格封裝的邊界背後,真正的動機是迫使程式設計師在完成編碼後,一定要為這段**的行為找到乙個合適的位置,確保它在物件模型中的唯一性。

這樣可以減少重複性的差錯,以及在新增新特性的時候,可以在乙個更合適的位置引入變化。

這九條原則可以作為對物件導向優秀設計的訓練(可以通過乙個小的專案),但是,在實際的過程中不可以教條的應用上面的原則。引用p.j. plauger

的話:

「你在應用某種設計方法的時候越教條化,你所能解決的現實問題就會越少。請把設計看出是乙個險惡的,雜亂的和啟發式的過程(沒有教條化的規則可以遵循,能夠巧好解決現實問題的方案才是最佳的方案)。不要停留於你所想到的第一套方案,而是去尋求合作,探求簡潔性,在需要的時候做出原型,迭代,並進一步迭代。你將對你的設計成果感到滿意。」

物件導向健身操

本文內容來自 軟體開發沉思錄 優秀設計背後的七條核心概念 內聚性,松耦合,零重複,封裝,可測試性,可讀性,單一職責。採用這些規則的關鍵是,使用物件導向的思考。動機 龐大的方法往往缺少內聚性,乙個常見的原則是將方法控制著5 行以內 不包括入參檢查 你可以嘗試讓每個方法只做一件事情 每個方法只保護乙個控...

物件健身操 Thought Works文集

最近看到了一本非常值得閱讀的書 軟體開發沉思錄 thought works 文集 13篇美文薈萃軟體開發精華,來自軟體界思想領袖們的經驗心得,為你開啟敏捷開發之門。其中有一篇文章非 常經典,讓我愛不釋手。現在我把裡面的部分思想摘錄於此,以此來警戒自己。九步邁向優秀軟體設計 物件導向程式設計一直在鼓勵...

IT人的IT健身操

it業在改變我們生活方式的同時,也帶來了新的健康隱患。長時間地坐在電腦前工作,容易引起肩背肌肉痠痛 皮下脂肪堆積 肌肉鬆弛等症狀,如果不及時採取措施,很容易引起病變。為了防止這種 新型疾病 的侵入,我們特別請來健美操專家為你設計編排了這套健身操,你不妨在工作間隙試著練上一兩招,對緩解肌肉痠痛,調節血...