使用赋值作为表达式是一种好的做法吗?
本文关键字:一种 赋值 表达式 | 更新日期: 2023-09-27 18:02:36
这在c# .Net中会被认为是不好的做法吗?
public T CurrentValue {
get {
return current;
}
protected set {
AnimationUpdated(new AnimationChangedEventArgs(current = value));
}
}
假设T在这个范围内是有效的,并且current被声明为类型T,这将工作,但我将把赋值移到它自己的行。
这是一件小事,但我觉得它使它更易于阅读。我将变量赋值排除在方法调用之外。IT还显示了做两件事的意图。
在我工作的地方,这是不好的做法。
public T CurrentValue {
get {
return current;
}
protected set {
current = value;
AnimationUpdated(new AnimationChangedEventArgs(current));
}
}
从技术上讲,这在语法上是有效的(c#在这方面遵循C -一个"简单"的赋值也是一个表达式),但它令人困惑。首先,它看起来太像"=="了(事实上,人们一开始可能会认为这就是你想要做的);也很容易忽略赋值正在发生的事实,因为你通常不会期望它在那里发生。
我同意TychonOmega的观点,但是,我看到您试图在值发生变化时引发事件。也许你应该考虑使用一个Observable类型,而不是这样做。看看这些文章:
https://msdn.microsoft.com/en-us/library/system.reactive.linq.observable (v = vs.103) . aspx
https://msdn.microsoft.com/en-us/library/dd990377 (v = vs.110) . aspx