我的一些同事认为验证是横切关注点的一个例子,并认为面向方面编程是处理验证关注点的好方法。要使用 PostSharp 表示法,他们认为这样的做法是个好主意:
[InRange(20.0, 80.0)]
public double Weight
{
get { return this.weight; }
set { this.weight = value; }
}
我的观点是验证是算法的固有部分,没有必要使用 AOP 将其推到幕后。然而,这很像一种直觉,我对此没有非常明确的理由。
你认为什么时候用 AOP 处理验证是个好主意,什么时候用你的主代码内联处理它更好?