這一直困擾著我多年。SOLID 是一組關于可維護和可擴展開發的五項原則,通常適用于 C# 等大型專案。
但真的有五個原則嗎?換句話說,是否可以撰寫滿足4但不滿足5或原則的代碼?這對于 4 個原則中的任何一個選擇都是正確的嗎?
我問的原因是我很難完全分離所有它們的邏輯,而且它們似乎有點重疊,這讓我懷疑是否需要所有五個規則,或者是否可以用三個原則更簡潔地描述 SOLID .
uj5u.com熱心網友回復:
將 SOLID 原則視為一個補充工具包,而不是單個概念單元。Martin 甚至按照重要性對這些原則進行了排序(播客鏈接)。它們是具有不同目的的不同原則,但應用程式越大,您就越有可能有機會利用所有這五個原則。
還要記住,還有大量其他設計模式、實踐和原則可以幫助您撰寫更好的代碼和設計更好的系統——SOLID 只是冰山一角。
uj5u.com熱心網友回復:
你當然可以設想不同的原則,人們有:例如GRASP和CUPID。
從 Robert Martin 的角度來看,SOLID 是不同的,任何四個都可以在沒有另一個的情況下應用。稍微說一下,最密切相關的兩個可能是OCP 和 DIP。特別是,DIP 是其他原則的擴展(用 Martin 自己的話),但顯然是他覺得值得一提的擴展;甚至我們可以從 OCP 中挑選出來的 DIP。其他的相對容易隔離。
這并不是說沒有重疊。事實上,如果基礎編程原則彼此之間沒有關系,那就太奇怪了。但很明顯,這個想法是每個人都貢獻了一些獨特的東西。
當然,如果你嘗試過,你可以將這五個壓縮到更少的東西,但我認為SRP在這里是一個警示故事。它已經是幾個舊原則的組合,包括耦合、內聚和關注點分離。在我看來,將這些原則濃縮為一個(大概是更一般的原則)已經導致了 SOLID 最令人困惑的方面。
想象一下,如果只有一個原則。那么編程不是很容易嗎?唉,該原則是如此模糊和籠統,以至于不適用。考慮相反的情況:SOLID 可以擴展為十幾個或一百個原則。它不再適合貼在保險杠貼紙上,因此不太適合營銷和銷售書籍,但它會更真實地捕捉軟體設計的復雜性。
我認為這些原則集的任何作者都不會堅持他們的集是詳盡無遺的。但我確實認為你可以從每個原則中學到一些東西。
uj5u.com熱心網友回復:
it seems like they overlap a bit,是的,我完全同意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329793.html
上一篇:PHPOOP中的重寫方法
下一篇:可以將類實作與其介面硬耦合嗎?
