c# - 如果数据库触发器是邪恶的,那么在 java 或 C# 中设置属性时产生副作用是否也是邪恶的?

标签 c# java getter-setter

我们假设[数据库触发器是邪恶的]。 1

这是否意味着在 java 或 C# 对象上设置属性时的副作用也是邪恶的?

在我看来,所有相同的问题都存在。

最佳答案

这里违背了原则......

属性不应引发副作用。这就是方法的用途。

通过让属性产生副作用,您最终会陷入代码本质上被隐藏的情况。人们很少期望属性(property)会启动某些流程或导致其他事情发生变化。如果必须记录下来,那么它并不明显并且容易被忽略。

但是,我们确实希望在调用方法时会发生一些事情。

以 @astander 为例,他说更改“价格”的行为应该导致不同的属性“成本”发生更改。但是,如果我们稍后添加一个名为“Discount”的新属性怎么办? Price 和 Amount 属性周围的代码必须更改。这不太容易被发现。

但是,如果成本自行计算......那么一切都会变得更好。

关于c# - 如果数据库触发器是邪恶的,那么在 java 或 C# 中设置属性时产生副作用是否也是邪恶的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321573/

相关文章:

c# - 运行一次登录场景然后运行多个场景

java - 如何在 arraylist 中使用先前定义的类

java - android http 请求的未知主机异常应返回 XML

Java 写入文件 - 访问被拒绝

c# - 除了一个程序集之外,我如何隐藏所有程序集的 "setters"?

c# - CheckedListBox 设置ItemCheckState

c# - 生成一组(相对)短的 "invitation codes"的好方法是什么

c# - DynamicMethod Reflection 发出对 Func<Task> 的调用

Doctrine Override 关系字段的 getter 和 setter

java - 是否所有 JavaBean 属性都必须同时使用 getter 和 setter?