这件事困扰我很久了。SOLID是一套用于可维护和可扩展开发的五条原则,通常适用于C#等大型项目。
但真的有五条原则吗?换句话说,是否有可能编写满足4而不是5或原则的代码?对于任何四项原则的选择都是这样吗?
我之所以问这个问题,是因为我很难把它们的逻辑完全分开,而且它们似乎有点重叠,这让我怀疑是否需要所有五条规则,或者是否可以用三个原则来更简洁地描述这些规则。
发布于 2021-10-21 13:55:31
从罗伯特·马丁的角度来看,固体是不同的,任何四种都可以在没有另一种的情况下应用。在一点切线上,最密切相关的两个可能是OCP和DIP。特别是,DIP是其他原则的延伸(用Martin自己的话来说),但显然是他觉得值得呼吁的延伸;甚至是我们可以从OCP中分离出来的DIP。其他的则相对容易分离。
这并不是说没有重叠。事实上,如果基本编程原则彼此之间没有关系,那将是很奇怪的。但很明显,每个人都贡献了一些独特的东西。
当然,如果你尝试的话,你可以把五个压缩成更少的东西,但是我认为SRP在这里是一个警示性的故事。它已经是几个较老原则的组合,包括耦合、内聚力和关注点分离。在我看来,将这些原则浓缩成一个(大概更一般的)原则,已经导致了固体中最令人困惑的一面。
想象一下,如果只有一个原则。那么编程就不容易了吗?遗憾的是,这一原则将是如此模糊和笼统,以致于不适用。考虑一下相反的情况:固体可以扩展成十几个原则,或者是100个原则。它将不再适合一个保险杠贴纸,所以不是很好的营销和销售书籍,但它将更现实地捕捉到软件设计的复杂性。
我不认为这些原则集的任何作者都会坚持他们的集合是详尽无遗的;但是我认为你可以从每一个原则中学到一些东西。
发布于 2021-10-20 23:24:07
把坚实的原则看作是一个互补的工具包,而不是一个概念单元。马丁甚至按重要性排列原则(播客链接)。。它们是不同的原则,目的不同,但应用程序越大,您就越有机会利用这五个方面的优势。
还请记住,还有大量的其他设计模式、实践和原则,它们将帮助您编写更好的代码和设计更好的系统--实心只是冰山一角。
https://stackoverflow.com/questions/69649115
复制相似问题