読者です 読者をやめる 読者になる 読者になる

フィールドと一対一で対応するような setter の問題点

OOP

2月30日は不正だが、d.setMonth(2); d.setDay(30); は不正とは必ずしも言えない。

プログラミング言語/宗教論争 getter/setter を使うか使わないか

これはわかりやすくていい例だな。
この場合は (フィールドと一対一で対応しているように見える) 単純な setter じゃなくて、setDate(year, month, day) みたいな setter を用意する*1か、イミュータブルにしてコンストラクタからのみ設定できるようにすればいい。

*1:year も追加してるのはもちろんうるう年を考慮できるように