Ken*_*ran 7 static-analysis solid-principles
我知道盲目跟随任何"最佳实践"仍然可能导致一堆严重遵守最佳实践的垃圾.SOLID原则就是原则.它们并不适用于所有情况,但它们仍然是非常好的启发式方法,可以在代码中找到可能的改进.
它们的缺点是它们有时需要对源代码进行深入分析才能应用它们.我和大多数程序员一样,一直在寻找更有效的做事方式,所以我很好奇是否有人听说过试图测试SOLID原则(或缺乏原则)应用的分析工具.
SRP 单一责任原则
一堂课应该只有一个改变的理由.
OCP 开放原则
软件实体(类,模块,函数等)应该是可以扩展的,但是关闭以进行修改.
LSP Liskov替代原则
子类型必须可替代其基类型.
ISP 接口隔离原则
客户不应该被迫依赖他们不使用的方法.接口属于客户端,而不属于层次结构.
DIP 依赖倒置原则
抽象不应该依赖于细节.细节应取决于抽象.
- 从敏捷原则,模式和实践
我不认为自动静态分析可以确定原则是否得到尊重.要编写这样的工具,您需要正式定义每个概念的含义,并有办法根据任何代码进行检查.您如何正式确定责任的概念?我个人不知道.
也就是说,您可以使用工具来帮助您检测违规的可能性.例如,您可以使用代码度量标准,例如每个类的方法数,每个类的成员数,以确定类是否太大,因此可能违反SRP.
Liskov替换原则可能是个例外. 如果您在所有方法(前置条件,后置条件,不变量)上定义合约,那么您可以检查重新定义超类方法的方法是否不强化前置条件,不要削弱后置条件并尊重超类方法的不变量.我认为工具ESC/Java执行这些检查.阅读有关LSP的维基百科页面,必须执行更多检查.
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |