使用作业是一种表达良好的做法吗?

时间:2016-08-16 21:27:31

标签: c#

这会被认为是C#.Net中的不良做法吗?

public T CurrentValue {
        get {
            return current;
        }
        protected set {
            AnimationUpdated(new AnimationChangedEventArgs(current = value));
        }
    }

3 个答案:

答案 0 :(得分:2)

假设T在此范围内有效并且current被声明为类型T,这将起作用,但我会将赋值移动到它自己的行。

这是一件小事,但我觉得它让它更具可读性。我保留了方法调用的变量赋值。 IT还表明了做两件事的意图。

在我工作的地方,这被认为是不好的做法。

public T CurrentValue {
    get {
        return current;
    }
    protected set {
        current = value;
        AnimationUpdated(new AnimationChangedEventArgs(current));
    }
}

答案 1 :(得分:0)

从技术上讲,这在语法上是有效的(C#在这方面遵循C - “简单”赋值也是一个表达式)但它令人困惑。对于一件事来说,它看起来太像“==”了(事实上,人们最初可能会认为这首先是你想要做的事情);很容易错过任务正在发生的事实,因为你通常不希望它发生在那里。

答案 2 :(得分:0)

我同意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