do ~ while (false)

出向先の CVS 覗いてたら、変なコーディング方法をしているのを見つけました。それは、下のソースコードのように break を使いたいがために do ~ while (false) で囲むというもの。

個人的には goto っぽい感じがして好きじゃないのですが、これって一般的なんですか?

public ActionResult perform() {
    ActionResult result = null;
    /* DB アクセスクラス */
    SomeDbAccessClass db = new SomeDbAccessClass();
    do {
        if (doSomeWithoutDbProc() == SYS_ERR) {
        /* エラー時 */
            break;
        }
        if (db.doSomeWithDbProc() == DB_ERR) {
        /* エラー時 */
            break;
        }
        db.commit();
        result = new ActionResult(EVENT_SUCCESS);
        return result;
    } while (false)
    /* エラー処理 */
    db.rollback();
    result = new ActionResult(EVENT_ERROR);
    return result;
}

でも、保守メンテを考えていやいやこの書き方に統一して書くことにします。経験的に独自性(こんな書き方してみよう)とか自己満足(俺だけは綺麗な書き方しよう)は保守の敵です。

保守フェーズのことまで考えて作れるのがプロとアマチュアの違いだと思います。何を偉そうに。

コメント

コメントする

目次