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;
}

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

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

気に入ったらシェアお願いします!

この記事を書いた人

こんにちは!カノといいます👓
インターネットやテクノロジー、ビジネスモデルや歴史(世界史・日本史)、美術などが好きです。メガネのせいか真面目っぽく見えるらしいですが、基本的には昔からいい加減な性格です。
このブログは昔からずっと個人的な日記みたいな感じで書いてきていて、基本的には個人的なログになりますが、興味のあるところだけ読んでいただけるとうれしいです。コメントやTwitterのフォローなどは大歓迎です。

コメント

コメントする

目次