変数の寿命をコントロール

寿命のイメージ画像
中カッコ { } を使用して、変数の寿命――有効範囲――をコントロールできます。
適切に有効範囲をコントロールすることによって、変数が間違った場所で使用されることを防げます。
プログラムの例
メソッド内の変数について、以下に「有効範囲をコントロールしている例」を示します。
プログラムの詳細を理解する必要は、ありません。
public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ HttpSession session = request.getSession(); .... { UserInfo userInfo = new UserInfo(username); userInfo.setSelectedHeaderText("あいさつ文"); userInfo.setSelectedFooterText("署名など"); session.setAttribute("userInfo", userInfo); } { String boardname = manager.getBoardname(boardID); session.setAttribute("boardname", boardname); } //最初に表示するメッセージを準備する int startID = manager.getLastMessageStartID(boardID); .... }
userInfo変数は、水色の中カッコ { } 内だけで使用できます。その他では、使用できません。
例えば以下のように、userInfo変数を緑色の”boardname”の値として設定する、という間違ったプログラムを記述できません(コンパイルできません)。
例:
{ UserInfo userInfo = new UserInfo(username); ... } { ... session.setAttribute("boardname", userInfo);//コンパイルエラーになる }
この場合、緑色の中カッコ { } 内でuserInfo変数を使用できない、というコンパイルエラーになります。このコンパイルエラーで、プログラムの記述ミスに気づきます。
boardname変数についても同様です。
boardname変数は、緑色の中カッコ { } 内だけで使用できます。
その他の場所で、記述ミスによって間違って使用されることはありません。
「正常処理の流れ」が右側に移動
ところで、このように中カッコを使った書き方の場合、正常処理の青線に影響を与えます。中カッコを使うことにより、「字下げをする」「中カッコの分だけ行数が増える」ことになるからです。
正常処理の青線が「字下げ」の分だけ右側に移動して、中カッコの分だけ長くなります。よって「正常処理の流れ」について、少しわかりにくくなります。
しかし、間違って変数を使用することを防げるので、プログラムの品質を良くすることに役立つと思います。
※この記事は、2003年6月当時の記事になります。