最佳答案
这里违背了原则......
属性不应引发副作用。这就是方法的用途。
通过让属性产生副作用,您最终会陷入代码本质上被隐藏的情况。人们很少期望属性(property)会启动某些流程或导致其他事情发生变化。如果必须记录下来,那么它并不明显并且容易被忽略。
但是,我们确实希望在调用方法时会发生一些事情。
以 @astander 为例,他说更改“价格”的行为应该导致不同的属性“成本”发生更改。但是,如果我们稍后添加一个名为“Discount”的新属性怎么办? Price 和 Amount 属性周围的代码必须更改。这不太容易被发现。
但是,如果成本自行计算......那么一切都会变得更好。
关于c# - 如果数据库触发器是邪恶的,那么在 java 或 C# 中设置属性时产生副作用是否也是邪恶的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321573/