oot是乙個關於編寫可維護的物件導向**的迷你系列,不會讓你抓狂。
自變數
「每個人都可能感到困惑和混淆,在閱讀**時會中斷流程,從而使您倍增。」鮑勃·馬丁叔叔因此,我們不應該把它們當作方便而不顧後果地使用,而是應該採取相當程度的克制,把每乙個論點都當作一種責任。
結構體
最好的函式具有盡可能少的引數。理想情況下。
niladic > monadic > dyadic > triadic > polyadic
相同的準則適用於建構函式。
始終重構
「任何全球資料在被證明無辜之前總是有罪的。」馬丁•福勒(martin fowler)死亡由布林值
在大多數情況下,當您將布林值傳遞給函式時,就大聲向世人宣告您編寫的函式可以完成兩件事。一件事是真實情況,另一件事是錯誤情況。相反,您應該編寫了兩個函式,每種情況乙個。
掛在引數列表中的布林值可能會導致錯誤和混亂。如果這是真的,那意味著什麼?如果它是假的,那意味著什麼?如果函式的名稱和自變數未能完全清楚地說明這一點,則每次使用此函式時,都需要深入研究實現細節以了解要傳遞的正確值。傳遞兩個布林值甚至更糟。乙個需要兩個布林值的函式可以完成四件事!
零防禦傳遞null
給函式或編寫null
要傳遞的函式幾乎和傳遞布林值一樣糟糕。實際上,情況甚至更糟,因為根本不明顯只有兩種可能的狀態。
當然,對於非空情況和空情況都有行為。更好的方法是建立兩個函式,乙個採用非空引數,另乙個完全不採用該引數。不要使用null作為偽布林值。
聽甘道夫。空引數不得通過。老實說,防禦性程式設計很爛。用空檢查和錯誤檢查亂扔**太可怕了。我們不想認為我們的隊友會毫不留情地將null丟給我們的職能。這也意味著我們不信任阻止我們傳遞該null的單元測試。
這不適用於公共api,因為我們不知道誰會傳遞什麼。如果您的語言支援@notnull注釋或類似的概念,那麼使用它來標記您的公共函式,您可以通過丟擲類似illegalargumentexception這樣的東西來快速失敗。
我希望這可以幫助您避免編寫容易出錯的**,因為它對我有所幫助。您對此有何看法?這篇文章的靈感來自bob叔叔和他的書clean code。
C語言技巧 實現物件導向
利用static關鍵字的檔案作用域特性,保證私有函式和變數不暴漏給使用者 c 封裝,即隱藏物件的屬性和實現細節,僅對外公開介面 實現原理還是利用static的檔案作用域特性.c class car c static int car data static int car run int kilome...
設計模式系列 物件導向葵花寶典 物件導向技巧
宣告 本系列為物件導向葵花寶典一書學習總結內容,原作者部落格鏈結 8.設計原則8.1.內聚和耦合 內聚 是否專注模組的職責,是內聚性的充要條件 是否與模組處理的內容相關 耦合 耦合 或者稱依賴 是程式模組相互之間的依賴程度 內聚關注模組內部的元素結合程度,耦合關注模組之間的依賴程度 訊息耦合模組間的...
python 物件導向的籃球技巧訓練實現
def question num if num 1 print 我以前還在讀大學的時候也是校隊的,我們每天熱身完成以後第一件事就是運球,往返跑運球,之所以專業球員很少在快攻當中掉球是因為,首先他們的手感好,能夠在跑動的過程中對球掌握的很好,能快能慢 其次就是頻率好,之所以快攻容易掉球很大原因是人跑的...