インスタンス変数・Javaソースコードの書き方

インスタンス変数の操作

プログラムのソースコードクラス内に定義してあるインスタンス変数についてです。

インスタンス変数の値を操作する処理――例:値を設定する・取得する処理――は、インスタンス変数宣言の近所にあると良いと思います。
どのようにインスタンス変数の値を取り扱っているのか知りたい場合、近所――同じJavaソースファイル――を見れば、わかるからです。

そしてインスタンス変数の値を操作する処理は、一つのメソッドに「まとまっている」と良いです。
値を操作する処理を修正したり、理解したりする場合、そのメソッド1ヵ所だけ見れば良いからです。関連する記事:setterメソッド・getterメソッド

インスタンス変数のメソッド例

インスタンス変数の値を操作する処理の例を、示します。
なお、プログラムの詳細を理解する必要は、ありません。

public class TimeItem {
    ....
    //区分
    static final String divisionNotSelected = "divisionNotSelected";
    static final String paidVacation = "paidVacation";
    static final String myConvenience = "myConvenience";
    static final String companyConvenience = "companyConvenience";

    private String selectedDivision;//区分

    //例:<html:select>タグが利用する。
    public void setSelectedDivision(String division){
        assert division.equals(divisionNotSelected); 
        assert division.equals(paidVacation);
        assert division.equals(myConvenience);
        assert division.equals(companyConvenience);

        this.selectedDivision = division;
    }
    ....
}

インスタンス変数 selectedDivision を操作する――値を設定する――処理の例です。

次の文は、インスタンス変数 selectedDivision の宣言です。
private String selectedDivision;//区分

次の文は、インスタンス変数 selectedDivision に、変数 division の文字列を設定します。
this.selectedDivision = division;

次の文は、インスタンス変数の値に関する処理です。
取り扱える値を限定しています。
assert division.equals(divisionNotSelected);
assert division.equals(paidVacation);
assert division.equals(myConvenience);
assert division.equals(companyConvenience);

assert文によって、この変数 division は、次の4個の文字列だけ、取り扱えることを示します。
“divisionNotSelected”、”paidVacation”、”myConvenience”、”companyConvenience”
つまりインスタンス変数 selectedDivision の値は、それら4種類の文字列だけ設定できます。

近所にあるインスタンス変数に関する処理

このように以下の項目が、同じクラスTimeItem内にあります。

  • インスタンス変数 selectedDivision の宣言
  • インスタンス変数の値について、取り扱える値を限定する処理
  • インスタンス変数の値を操作――値を設定――する処理

つまり「これらの項目」が、近所に書かれています。
よって、インスタンス変数 selectedDivision に関する処理を理解しやすくなっている、と思います。

そして、 このインスタンス変数の値について、取り扱える値を限定する処理は、setSelectedDivision()メソッドにまとめられています。
つまり値を限定する処理は、プログラム中に「ただ1ヵ所」だけです。

よって値を限定する処理を理解したり、修正したりする場合は、この setSelectedDivision()メソッドだけを見れば良いです。

※この記事は、2003年6月当時の記事になります。