消極架構和關於程式碼的假設 - Matthias Noback - 部落格
在Michael Feathers的消極架構中,他列舉了Haskell(函數語言程式設計)中提到IO Monad作為一個例子,在物件導向程式設計中也有類似的例子,透過使用分層和依賴注入等原則,你也可以“保證”某個層中的某個類不會執行做什麼事情(單一職責)。下面是該文所舉的幾個例子:
1. 一個物件的建構函式應該沒有任何邏輯,只是接受入參並分配給類的屬性。
2. 如果一個物件被注入了很多的依賴者,那麼它也不會靜態地獲取依賴項。
3. 如果類沒有標記final,它至少就會有一個子類。
這將是消極架構的一個很好的例子:“你會發現我們從不擴充套件類,除非它們是非final”,當我看到一個類似“裸體”的或沒有final 宣告時,我假設它至少會有一個子類。如果沒有,也在遺留專案中,否則我就要新增final給它,作為保護其設計和防止濫用的第一步。
4.如果某個屬性未標記為”私有“,則至少一個子類會使用這個屬性
當我看到一個protected屬性時,我認為它是需要的並且實際上是由其中一個子類使用的。如果您可以將此規則應用於您的專案,那將非常有用。一個有用的方面是您的IDE或靜態分析工具將能夠將某些屬性標記為未使用
5.沒有類會使用不屬於其已釋出介面的方法
6.如果一個物件有一個public方法,它就沒有任何public static方法
總結
我認為“消極架構”是一種看待應用程式的有趣方式。此外,列舉上述例子對我來說是一個令人驚訝的練習。據我所知,這些規則並未寫入任何大型程式設計書籍中。但我們仍然依靠他們生活,並創造出我們應用程式中存在與否的一種情景:什麼可以或不可能發生在他們身上。
這非常有用,因為它使我們更安全地更改程式碼。因此,在進行重構和進行程式碼審查時,定期驗證和實施這些規則是個好主意。
相關文章
- 關於我的部落格
- 部落格部署設計和構建
- 關於寫部落格的思考
- 關於軟體架構和業務架構的思考架構
- 關於部落格園設定awescnb皮膚教程
- 做個開源部落格學習Vite2 + Vue3 (三)部落格設計和程式碼設計ViteVue
- 關於部落格更新說明
- 程式碼架構設計-1.為什麼要做好程式碼架構設計架構
- 關於部落格園各項工具的使用
- 關於hexo部落格的note標籤美化Hexo
- 關於小楊的個人部落格定位
- 關於部落格園美化裝修
- 關於部落格園裝修教程
- 關於 Go 程式碼結構的思考Go
- 關於部落格開源計劃的實施
- 關於我的部落格攝影作品板塊
- java架構的程式碼結構Java架構
- 資料結構相關部落格目錄資料結構
- 關於部落格園可能有用的網址
- 關於個人部落格的選擇及實現
- 關於 CLOI 頭像&部落格主題徵集
- PyCharm關於修改程式碼的風格及樣式PyCharm
- 十問 TiDB :關於架構設計的一些思考TiDB架構
- 程式碼的架構之說架構
- onethink搭建的技術部落格--悠悠極客
- 基於 abp vNext 和 .NET Core 開發部落格專案 - 資料訪問和程式碼優先
- 關於前端架構師的二三事前端架構
- 關於《給部落格園的幾點現實建議》
- 關於部落格園絕境求商的一點點感想!
- 極簡單欄部落格系統
- 第 09 篇:讓部落格支援 Markdown 語法和程式碼高亮
- 如何讓遊戲更大眾化? 關於積極玩法與消極玩法的思考遊戲
- 基於.NetCore開發部落格專案 StarBlog - (22) 開發部落格文章相關介面NetCore
- Java程式設計架構實戰——OKHTTP3原始碼和設計模式(上篇)Java程式設計架構HTTP原始碼設計模式
- 部落格設定
- 關於架構設計的易變性,應該如何理解呢?架構
- 關於程式碼版本管理的思考和建議
- 關於Static程式碼塊、匿名程式碼塊、構造器的小擴充C程式