Java - 変数を格納する抽象クラス? 質問する

Java - 変数を格納する抽象クラス? 質問する

抽象クラスでインスタンス変数を定義できるようにするのは良い習慣でしょうか?

public abstract class ExternalScript extends Script {

    String source;

    public abstract void setSource(String file);

    public abstract String getSource();
}

サブクラス ExternalJavaScript.class は自動的にソース変数を取得しますが、継承ではなくすべてのサブクラス自体がソースを定義するとコードが読みやすくなると思います。

あなたのアドバイスは何ですか?

/アダム

ベストアンサー1

変数を追加するのであれば、このような方法の方がずっと良いと思います。アクセスを制限して、よりクリーンにしてみてはいかがでしょうか。ゲッター/セッターは、その名の通りの動作をするはずです。

public abstract class ExternalScript extends Script {

    private String source;

    public void setSource(String file) {
        source = file;
    }

    public String getSource() {
        return source;
    }
}

質問に戻りますが、getter/setter コードを読むときに、そのコードがどこにあるかを確認したことはありますか? すべてが取得と設定を行うのであれば、コードを読むときに関数が「何をするか」を気にする必要はありません。他にも考慮すべき理由がいくつかあります。

  • ソースが保護されている場合 (つまりサブクラスからアクセス可能)、コードは乱雑になります。誰が変数を変更しているのでしょうか? オブジェクトの場合は、リファクタリングが必要になったときに困難になりますが、メソッドの場合はこの手順が簡単になる傾向があります。
  • ゲッター/セッター メソッドが取得と設定を行わない場合は、別の方法で記述します。

自分のクラスが本当に他のクラスと違うものかどうかを常に考えてください。そうすれば、何か他に必要なものがあるかどうかがわかるはずです。

おすすめ記事