回答編集履歴

1

誤記

2018/06/01 23:37

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -78,4 +78,4 @@
78
78
 
79
79
  余談ですが、基底クラスでgetter/setterを定義するなら派生クラスだろうがなんだろうが基底クラス以外のどのクラスに対してもこのフィールドに直接アクセスを許すのは不合理であり、privateにして直接アクセスを禁止すべきと思います。逆にアクセスを許すならgetterやsetterはいらないとも言えます。だってせっかく用意しても派生クラスがgetter/setterを介さずに直接参照・設定してしまうかも知れないのでgetter/setterが「自分だけがその属性をアクセスする際に呼び出される」と仮定できなくなるからです。
80
80
 
81
- setterで「Hpが0になったら死ぬ」という処理をせっかく仕込んでも派生クラスで`hp = 0;`なんて処理を書いてしまったらどうなりますか?別の場所で「死ぬ」という配慮をしなくてはならなくなりますよね?それは「hpが0になったら死ぬ」という仕様を「あちこちで定義しなくてはならない=>定義をどこか一か所で間違うと正しく動かなくなる設計=>バグが入り込みやすい設計」ということになります。
81
+ setterで「Hpが0になったら死ぬ」という処理をせっかく仕込んでも派生クラスで`hp = 0;`なんて処理を書いてしまったらどうなりますか?別の場所で「死ぬ」という配慮をしなくてはならなくなりますよね?それは「hpが0になったら死ぬ」という仕様を「あちこちで配慮」しなくてはならない=>配慮をどこか一か所で間違うと正しく動かなくなる設計=>バグが入り込みやすい設計」ということになります。