if文とelse文の距離

if文とelse文の距離は?
条件分岐の距離の例として、if文とelse文の距離についてお話したいと思います。
if文とelse文の距離が近いほど、if文の分岐処理を一覧できます。よって、「処理の流れ」がわかりやすいと思います。
if文とelse文の例
以下に「if文とelse文の距離が近い場合」について、例を示します。
プログラムの詳細を理解する必要は、ありません。
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ TimesheetForm timesheetForm = (TimesheetForm)form; String action = timesheetForm.getAction(); if (action.equals("init")){ //TimesheetFormに初期値を設定するため、 //timesheetAction.do?action=init が必要 //timesheetFrame.htmlから、ここを呼び出す return this.init(mapping, timesheetForm, request, response); } else if (action.equals("update")){ return this.update(mapping, timesheetForm, request, response); } else if (action.equals("show")){ return this.show(mapping, timesheetForm, request, response); } else{ throw new IllegalArgumentException("invalid action=" + action); } }
最初のif文から最後のelse文まで、15行ほどになっています。
距離が近いので、次のようにif文の分岐処理を理解できるでしょう。
- 変数actionが、”init”の場合
初期化処理をする。 - 変数actionが、”update”の場合
更新処理をする。 - 変数actionが、”show”の場合
表示処理をする。 - 変数actionが、その他の場合
変数actionは無効な値である、という例外を通知する。
この例では、if文からelse文までの距離を短くするため、それぞれの場合で行なう処理を、一つのメソッドにまとめています。
if文の分岐処理をわかりやすくするために、このようにメソッドを呼び出した場合、メソッド内の処理は隠蔽されています。例えば変数actionが”show”の場合に呼び出すメソッドshow(…)については、表示処理の詳細(ソースコード)はわかりません。
しかしこの場合では、メソッドshow(…)内の処理をわかりやすくするよりも、if文の「分岐処理のわかりやすさ」を優先しています。
※この記事は、2003年6月当時の記事になります。