我知道盲目地遵循任何“最佳实践”仍然会导致一堆臭味,严格遵守最佳实践。 SOLID原则就是原理。它们并不适用于所有情况,但是对于在代码中寻找可能的改进,它们仍然是很好的启发法。
它们的缺点是,有时它们需要对您的源代码进行深入的分析才能应用它们。与大多数程序员一样,我一直在寻找更有效的处事方式。因此,我很好奇是否有人听说过尝试测试SOLID原理(或缺乏SOLID原理)应用的分析工具。
SRP 单一责任原理
一个班级只有一个理由更改。
OCP 开闭式原理
软件实体(类,模块,功能等)应该开放给扩展名,但因修改。
LSP Liskov替代原理
子类型必须可替换为他们的基本类型。
ISP 接口隔离原理
不应强迫客户依赖根据他们不使用的方法。接口属于客户端,不属于层次结构。
DIP 依赖反转原理
抽象不应依赖于细节。细节应取决于抽象。
-摘自Robert C. Martin的敏捷原则,模式和实践]。
我知道盲目地遵循任何“最佳实践”仍然会导致一堆臭味,严格遵守最佳实践。 SOLID原则就是原则。它们不适用于...
我认为自动静态分析不能确定是否遵守这些原则。要编写这样的工具,您需要正式定义每个概念的含义,并有一种方法可以对照任何代码对其进行检查。您将如何正式化责任概念?我个人不知道。
我的答案涉及一个.NET特定的产品,事先道歉,也许有人可以建议其非.NET类似物。
我会尝试NDepend,看看它是否可以通过使用类似的指标使我违反SRP和ISP: