我试图了解如何根据 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;
}
}