消極架構和關於程式碼的假設 - Matthias Noback - 部落格
在Michael Feathers的消極架構中,他列舉了Haskell(函數語言程式設計)中提到IO Monad作為一個例子,在物件導向程式設計中也有類似的例子,透過使用分層和依賴注入等原則,你也可以“保證”某個層中的某個類不會執行做什麼事情(單一職責)。下面是該文所舉的幾個例子:
1. 一個物件的建構函式應該沒有任何邏輯,只是接受入參並分配給類的屬性。
2. 如果一個物件被注入了很多的依賴者,那麼它也不會靜態地獲取依賴項。
3. 如果類沒有標記final,它至少就會有一個子類。
這將是消極架構的一個很好的例子:“你會發現我們從不擴充套件類,除非它們是非final”,當我看到一個類似“裸體”的或沒有final 宣告時,我假設它至少會有一個子類。如果沒有,也在遺留專案中,否則我就要新增final給它,作為保護其設計和防止濫用的第一步。
4.如果某個屬性未標記為”私有“,則至少一個子類會使用這個屬性
當我看到一個protected屬性時,我認為它是需要的並且實際上是由其中一個子類使用的。如果您可以將此規則應用於您的專案,那將非常有用。一個有用的方面是您的IDE或靜態分析工具將能夠將某些屬性標記為未使用
5.沒有類會使用不屬於其已釋出介面的方法
6.如果一個物件有一個public方法,它就沒有任何public static方法
總結
我認為“消極架構”是一種看待應用程式的有趣方式。此外,列舉上述例子對我來說是一個令人驚訝的練習。據我所知,這些規則並未寫入任何大型程式設計書籍中。但我們仍然依靠他們生活,並創造出我們應用程式中存在與否的一種情景:什麼可以或不可能發生在他們身上。
這非常有用,因為它使我們更安全地更改程式碼。因此,在進行重構和進行程式碼審查時,定期驗證和實施這些規則是個好主意。
相關文章
- 關於我的部落格
- 關於部落格圈,團隊部落格的問題
- 關於寫部落格的思考
- 關於軟體架構和業務架構的思考架構
- 亞馬遜雲架設WordPress部落格亞馬遜
- 關於部落格園設定awescnb皮膚教程
- 部落格即程式碼
- 做個開源部落格學習Vite2 + Vue3 (三)部落格設計和程式碼設計ViteVue
- 數學和程式設計-王垠部落格程式設計
- 關於部落格園裝修教程
- 關於部落格園各項工具的使用
- 關於小楊的個人部落格定位
- 關於我對於寫部落格寫文章的理解
- 關於程式設計師的極品漫畫程式設計師
- 基於github和hexo搭建部落格 本地hexo部落格搭建GithubHexo
- 程式設計師值得關注的12個國外部落格程式設計師
- 關於部落格開源計劃的實施
- 關於部落格評論外掛的討論
- 關於寫技術部落格的一點思考
- 架構重構--改善既有程式碼的設計架構
- 部落格連結—程式設計程式設計
- 程式碼架構設計-1.為什麼要做好程式碼架構設計架構
- 關於程式設計風格的討論 (轉)程式設計
- [技術討論]架構設計和程式碼之間的關係以及程式設計師任務安排架構程式設計師
- 關於 Go 程式碼結構的思考Go
- 資料結構相關部落格目錄資料結構
- 關於 CLOI 頭像&部落格主題徵集
- 關於個人部落格的選擇及實現
- 關於HEXO搭建個人部落格的點點滴滴Hexo
- 關於部落格園可能有用的網址
- 如何讓遊戲更大眾化? 關於積極玩法與消極玩法的思考遊戲
- 極簡單欄部落格系統
- REST架構風格的架構元素REST架構
- 基於 Laravel5.3 的個人部落格重構完成Laravel
- 部落格園使用sublime text風格的程式碼高亮樣式
- 關於《給部落格園的幾點現實建議》
- 有關雲架構建設和選型的思考架構
- java架構的程式碼結構Java架構