前提・実現したいこと
Unityでゲームを作っているのですが、キャラのクラスで、抽象メソッドを使用するか、仮想メソッドにするか悩む部分が出てきました。
なるべくみんながミスなくコーディングでき、依存も少なくするには、どちらがいいか、意見を頂けますでしょうか。
コード例
Awakeから呼ばれるOnAwakeメソッドについて
抽象メソッドを使用した場合
class Base{ void Awake{ // 共通処理 // ... OnAwake(); } protected abstruct void OnAwake(); } class Abc : Base{ protected override void OnAwake(){ // 個別処理 // ... } }
◆メリット
継承元コードを追わなくても、OnAwakeの存在を意識できる
◆デメリット
今後OnAwakeを使用しない形になった場合に、全継承先を修正する必要がある
仮想メソッドを使用した場合
class Base{ void Awake{ // 共通処理 // ... OnAwake(); } protected virtual void OnAwake(){ } } class Abc : Base{ protected override void OnAwake(){ // 個別処理 // ... } }
メリット
継承先クラスは必要でなければOnAwakeを書かなくて済むので、
今後OnAwakeを使用しない形になった場合などに、修正が最小限になる
デメリット
継承元をちゃんと読まないと、OnAwakeの存在に気づけない
補足情報
単純にAwakeを継承する案もありましたが、base.Awakeの呼び出し漏れが怖いのでやらない方がいいかと考えました。また、実をいうと、個人的には仮想関数を使用する形の方がいいと考えていたのですが、「継承元に空メソッドを置くのが悪!」という話を聞いたので、怖くなって質問させていただきました。
以上になります。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/23 13:36 編集