【发布时间】:2021-01-14 02:57:49
【问题描述】:
我试图了解如何根据 C# 属性计算基本类结构指标,例如 ATFD(访问外部数据)和 LCOM(方法缺乏内聚)。
如果一个方法访问另一个类的单个属性,这是否意味着该方法的 ATFD 分数为 1?这会根据是否有支持的私有字段而改变吗?
对于 LCOM,当遵循 NDepend 制定的公式(例如 https://www.ndepend.com/docs/code-metrics#LCOM)时,属性是否算作字段或方法(或两者都算)。
当我们有一个与属性相关的显式私有字段时,这将如何改变 - 即以下 A 类和 C 类的 LCOM 差异是什么:
class A {
private int _b;
private int _bx;
public int B { get { return this._b; }
set { this._b = value; }
}
public void MethodA() {
B = 1;
}
public void MethodB() {
this._bx = 1;
}
}
class C {
public int B { get; set; }
public int Bx { get; set; }
public void MethodA() {
B = 1;
}
public void MethodB() {
Bx = 1;
}
}
【问题讨论】: