« 私はこう書く - IF文 | トップページ | C言語の単体テスト、いろいろ »

私はこう書く - GOTO文

今月は久しぶりにコードを書いた。

==

僕個人のクセでもあるのだが、GOTO文をよく使う。一般的には構造化の妨げやデバッグしにくさの原因になるので、エラー処理・例外処理での活用が多いですね。

...
  if( foo_func() == -1 ){
    /* エラー発生 */
    goto retired;
  }
...
retired:
/* ファイル操作の後処理 */
  if( fd != -1 ){
    close(fd);
    fd = -1;
  }
/* 動的領域の後処理 */
  if( ptr != (hoge_t*)NULL ){
    hoge_t_free(ptr);
    ptr = (hoge_t*)NULL;
  }
/* エトセトラ */
...
  return(rc);
}

Goto1

後処理をまとめておくことで、クローズ漏れや解放漏れの防止やレビュー時の可読性も向上するんじゃないかと思ってます。

|

« 私はこう書く - IF文 | トップページ | C言語の単体テスト、いろいろ »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/155415/10137748

この記事へのトラックバック一覧です: 私はこう書く - GOTO文:

« 私はこう書く - IF文 | トップページ | C言語の単体テスト、いろいろ »