副作用のないセッターをどこまで使うかについて、あなたの意見を聞きたいと思います。
次の例を考えてみましょう。
Activity activity;
activity.Start = "2010-01-01";
activity.Duration = "10 days"; // sets Finish property to "2010-01-10"
日付と期間の値は、表示のみを目的として示されていることに注意してください。
Start
したがって、いずれかのプロパティにsetterを使用すると、Finish
他Duration
のプロパティが変更されるため、副作用がないと見なすことはできません。Rectangle
同じことがクラスのインスタンスにも当てはまります。ここで、setterforX
はなどの値を変更しTop
ますBottom
。
問題は、論理的に関連するプロパティの値を変更するという副作用があるセッターを使用することと、とにかくこれ以上説明できないメソッドを使用することの間に、どこで線を引くかです。たとえば、呼び出されるメソッドを定義SetDurationTo(Duration duration)
しても、開始または終了のいずれかが変更されることは反映されません。