我想就无副作用的二传手能走多远征求你的意见。
考虑以下示例:
Activity activity;
activity.Start = "2010-01-01";
activity.Duration = "10 days"; // sets Finish property to "2010-01-10"
请注意,日期和持续时间的值仅供参考。
因此,将 setter 用于任何属性Start
,Finish
因此Duration
会更改其他属性,因此不能被视为无副作用。同样适用于Rectangle
类的实例,其中 setter for正在更改等X
的值。Top
Bottom
问题是在使用 setter(具有更改逻辑相关属性的值的副作用)和使用方法(无论如何都不能更具描述性)之间划清界限。例如,定义一个调用的方法SetDurationTo(Duration duration)
也不反映 Start 或 Finish 将被更改。