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