【发布时间】:2021-10-20 15:43:14
【问题描述】:
这一直困扰着我多年。 SOLID 是一组可维护和可扩展开发的五项原则,通常适用于 C# 等大型项目。
但是真的有五个原则吗?换句话说,是否可以编写满足 4 但不满足 5 或原则的代码?这对于任何 4 项原则的选择都是正确的吗?
我问的原因是我很难完全分离它们的逻辑,而且它们似乎有点重叠,这让我怀疑是否需要所有五个规则,或者是否可以更简洁地描述 SOLID,比如说,三个原则。
【问题讨论】:
-
SOLID 只是一个有魅力的人的营销视角。我喜欢在其他原则的背景下查看 SOLID,例如 principles-wiki.net/collections:solid -- 当您深入研究时,您会发现 SRP 是高内聚等的专业化。设计是一个非常困难的问题,因为游戏和他们的互动(他们真的可以反对)。我发现讨论关系不如查看实际问题(看到光明)有用(它会产生热量)。
-
@Fuhrmanator 我不想在我的回答中深入探讨意见,但我相信助记符在 SOLID 的普及中发挥了不小的作用。
-
@Fuhrmanator,公平地说,这五项原则并不是 Bob Martin 自己发明的。 OCP 来自 Bertrand Meyer。 LSP 来自 Barbara Liskov。 SRP 是 Martin 至少归功于前五位作者的旧原则的组合。他描述的 DIP 是同时应用 OCP 和 LSP 的结果。所以马丁真正发明的唯一原则是 ISP,他称其为五项中最不重要的一项。 “只是一个人的观点”卖 SOLID 有点短。将其称为几个(聪明的)人的“收集的智慧”会更公平。
-
@jaco0646 我引用的 wiki 支持您的评论 110%。您会发现对所有这些人的作品的引用等等。我称这些为“市场化”观点,因为这意味着人们已经出版了书籍并就他们的collections 进行了热情洋溢的讨论:GRASP (Larman)、GoF、OOSC (Meyer)、Pragmatic Programmer (Hunt, Thomas)、Unix Philosophy (Raymond) .
-
it seems like they overlap a bit: 是的,我完全同意。
标签: oop design-patterns solid-principles