質問: true のような直接代入、 他クラスでは SetFlag(true) のようなアクセサで代入となっていました。 個人的にはアクセサに統一したほうが、メンテナンスしやすいと考えるのですが、このように分けて書く理由を教えたいただければ幸いです。 私としては、処理が早くなるくらいしか思いつかず。。。 どうぞよろしくお願いいたします。 【補足】 C++からの移植コードのため、プロパティとして定義されていません。
回答: こんにちは。 > > 個人的にはアクセサに統一したほうが、メンテナンスしやすいと考えるのですが、このように分けて書く理由を教えたいただければ幸いです。 > > > 元々アクセサは、直接フィールドを設定する前や参照後に何か処理を割り込ませるために用意された仕組みです。 その処理を割り込ませたくない時には直接アクセスすることになります。 割り込ませる処理がない時でも、将来的な拡張に備えて外部I/Fについてはアクセサ経由することは多いです。 しかし、具体的にどんな処理を入れるのか見えていない時、内部アクセスをどうするべきか悩ましいです。 内部アクセスは後から変更することは容易ですし、アクセサにブレークを張ってデバッグする手法もありますから、内部からのアクセスでもアクセサ経由しておくのもありと感じます。 逆に速度を取るとか、ムダに複雑な動作をさせない等の理由で内部からはアクセサ経由しないのもありと思います。 正解はないので、あまり深く考えてても仕方がない部分かも知れません。