gpt4 book ai didi

static-analysis - 是否有任何静态分析工具将报告遵循SOLID原则的程度?

转载 作者:行者123 更新时间:2023-12-04 10:45:52 24 4
gpt4 key购买 nike

我知道盲目地遵循任何“最佳实践”仍然会导致一堆臭味,严格遵守最佳实践。 SOLID原则就是原则。它们并不适用于所有情况,但是对于在代码中寻找可能的改进,它们仍然是很好的启发式方法。

它们的不利之处在于它们有时需要对您的源代码进行深入的分析才能应用它们。与大多数程序员一样,我一直在寻找更有效的处事方式。因此,我很好奇是否有人听说过尝试测试SOLID原理(或缺乏SOLID原理)应用的分析工具。

SRP The Single Responsibility Principle

A class should have only one reason to change.

OCP The Open-Closed Principle

Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

LSP The Liskov Substitution Principle

Subtypes must be substitutable for their base types.

ISP The Interface Segregation Principle

Clients should not be forced to depend upon methods that they do not use. Interfaces belong to clients, not to hierarchies.

DIP The Dependency Inversion Principle

Abstractions should not depend upon details. Details should depend upon abstractions.



-摘自罗伯特·C·马丁(Robert C. Martin)的敏捷原则,模式和实践。

最佳答案

我认为自动静态分析无法确定是否遵守这些原则。要编写这样的工具,您需要正式定义每个概念的含义,并有一种方法可以对照任何代码对其进行检查。您如何将责任的概念形式化?我个人不知道。

也就是说,您可以使用工具来检测违规的可能性。
例如,您可以使用代码度量标准(例如每个类的方法数量,每个类的成员数量)来确定一个类是否太大,因此有可能违反SRP。

Liskov替代原则可能是一个异常(exception)。
如果您在所有方法(前提条件,后置条件,不变量)上定义了契约,则可以检查重新定义父类(super class)方法的方法不会增强前提条件,不会削弱后置条件并尊重方法的不变性父类(super class)的方法。我认为工具ESC/Java会执行这些检查。
阅读wikipedia page about LSP时,必须执行更多检查。

关于static-analysis - 是否有任何静态分析工具将报告遵循SOLID原则的程度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com