- 580 名前:デフォルトの名無しさん mailto:sage [2019/01/17(木) 15:59:55.65 ID:LP4V/wDK.net]
- >>521
今更だけど オブジェクトそのもの(あるいは一部)を初期化するメンバ関数は基本的にPublicになることはないかなって話 例えば、init()、update()、final()ってメンバ関数があったとして init()→update()→final()の一連の流れをオブジェクト利用者に約束事として強要しちゃうわけよ final()で一旦終えた後に、init()せずにupdate()しちゃったらオブジェクト内部がおかしな状態になるかも知れない じゃあ、final()の中でinit()しちゃえばいいよねってなるけど、final()(init実行)→init()って無駄なことをされてしまう そうするとinit()が邪魔になり、コンストラクタ内でinit()を呼んで、利用者に好きなだけupdate()させて final()(init含む)で結果を受け取ってもらった方が分かりやすいよね 利用者が「この処理やーめた」って出来るようにオブジェクトそのものを初期状態へ戻すreset()のメンバ関数を 増やすのなら分かるけど、利用者からしたらいちいち処理の最初に呼び出すinit()は要らんよね 同様に一部のメンバ変数へのSetter(再代入、初期化)は極力排除するべきだと思うよ オブジェクト内部で処理される絶えず変化するメンバ変数なんて外部からSetするようなものじゃないし 逆に処理に利用される外部から能動的に値を変えない限り定数状態になっているようなメンバ変数なら オブジェクト構築時に初期化するようにして、それらの値を変えたいなら新しくオブジェクトを構築したら良いと思うよ
|

|