Javaソースコードにおいて、波括弧 {} を使用して変数の寿命を限定する書き方

Javaソースコードにおいて、変数が間違った場所で使用されるのを防ぎたいです。

Javaソースコードにおいて、波括弧 { } を使用して、変数の寿命(変数の有効範囲)を限定できます。
変数の有効範囲を限定することは、変数が間違った場所で使われることを防ぎます。

Javaソースコードで変数を記述する際、変数の有効範囲を限定してください。
そうすることで、変数の誤用によるプログラムの誤動作を防げます。

Javaソースコードで、波括弧 {} を使用して変数の寿命を限定する書き方

Javaソースコードにおいて波括弧 { } を使用して、変数の寿命――有効範囲――を限定できます。

適切に変数の有効範囲を限定することによって、変数が間違った場所で使用されるのを防げます。

変数の誤用を防ぐことで、プログラムの誤動作を防げます。

Javaプログラミング
Javaプログラミング・イメージ画像

変数の寿命を限定しているプログラムの例

メソッド内の変数について、以下に「変数の寿命(有効範囲)を限定している例」を示します。
プログラムの詳細を理解する必要は、ありません。

public ActionForward perform(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
    
    HttpSession session = request.getSession();
    ....

    {  //波括弧その1
        UserInfo userInfo = new UserInfo(username);
        userInfo.setSelectedHeaderText("あいさつ文");
        userInfo.setSelectedFooterText("署名など");
        session.setAttribute("userInfo", userInfo);
    }
    {  //波括弧その2
        String boardname = manager.getBoardname(boardID);
        session.setAttribute("boardname", boardname);
    }

    //最初に表示するメッセージを準備する
    int startID = manager.getLastMessageStartID(boardID);
    
    ....
    
}

userInfo変数は、波括弧その1 { } 内だけで使用できます。その他の場所では、使用できません。

例えば以下のように、
userInfo変数を、波括弧その2の範囲にあるsession.setAttribute()メソッドの引数に設定する、
という間違ったプログラムを記述できません。

{  //波括弧その1
    UserInfo userInfo = new UserInfo(username);
    ...
}
{  //波括弧その2
    ...
    session.setAttribute("boardname", userInfo);//コンパイルエラーになる 
}

この場合、波括弧その2 { } 内でuserInfo変数を使用できない、というコンパイルエラーになります。
このコンパイルエラーで、プログラムの記述ミスに気づきます。

boardname変数についても同様です。

boardname変数は、波括弧その2 { } 内だけで使用できます。
その他の場所で、記述ミスによって間違って使用されることはありません。

波括弧を使った書き方の場合、「正常処理の流れ」が右側に移動します

ところで、このように波括弧を使った書き方の場合、正常処理の青線に影響を与えます。

波括弧を使うことにより、ソースコードは以下の影響を受けます。

  • 字下げをすることになる。
  • 波括弧の分だけ行数が増える。

正常処理の青線が、字下げの分だけ右側に移動して、波括弧の分だけ長くなります。
よって「正常処理の流れ」について、少しわかりにくくなります。

しかし、間違って変数を使用することを防げるので、プログラムの誤動作も防げます。

よって、波括弧を使った書き方は、プログラムの品質を良くすることに役立つ、と言えます。

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

{} の名称は、波括弧それとも中括弧?

{} の名称について調べたところ、

一般的に、{} は波括弧と呼ばれますが、中括弧と呼ぶ場合もある、ということです。

波括弧という名称は、以下の用途で使われます。

  • 複数の要素をグループ化する。
  • プログラミング言語のコードブロックを示す。

中括弧という名称は、集合や区間を表すのに使われます。

実は私は、ずっと前から {} の名称を中括弧だと思っていました。

だけど、プログラミングを話題にしたブログ記事などを見ると、波括弧と呼んでいる場合が多かった気がします。

プログラミングの話題では、波括弧という名称を使っておけば、問題なさそうです。

変数にまつわるソースコードの可読性や保守性が向上する、波括弧を使用して変数の寿命(有効範囲)を限定する書き方

この記事では、ローカル変数に対して、波括弧を使用して寿命(有効範囲)を限定する書き方について、お話してきました。

ローカル変数の有効範囲を限定することには、以下のような利点があります。

ローカル変数にまつわるソースコードの可読性や保守性が向上する

ローカル変数はブロック内でのみ使用されるため、ソースコードの可読性や保守性が向上します。

波括弧を使用することで、ローカル変数のスコープを明確にすることができます。
変数がどこで宣言されて、どこまで有効かについて、わかりやすくなります。

ローカル変数を有効範囲外で使うと、コンパイルエラーになります。エラーによって、変数に関する記述ミスに気がつきます。

よって、ローカル変数にまつわるソースコードの可読性や保守性が向上します。

ローカル変数の名前の衝突を防ぐ

ローカル変数の名前の衝突を、防ぐことができます。

同じ名前の変数を別のブロックで宣言しても、それぞれのブロック内でしか参照できません。
よって、ローカル変数の名前について、混乱が起こりにくいです。

プログラムのメモリ効率が良くなる

変数が必要なブロック内だけで、変数を宣言すれば、変数の寿命を短くできます。

ローカル変数はブロックが終了すると、自動的に破棄されて、メモリから解放されます。

そのため、プログラムのメモリ効率が良くなります。

以上の事から、Javaプログラミングにおいて、波括弧を使用してローカル変数の寿命(有効範囲)を限定する書き方は、有用と言えます。

【まとめ記事】へのリンク

【まとめ記事】Javaアプリの品質を保つため、Javaソースコードを書くための工夫

Javaソースコードを正しく書くための、ちょっとした工夫について、ご紹介しています。 変数の寿命を限定する書き方。 肯定的な条件を優先して条件分岐する書き方。 クラス…