私はこう書く - 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);
}

後処理をまとめておくことで、クローズ漏れや解放漏れの防止やレビュー時の可読性も向上するんじゃないかと思ってます。
| 固定リンク
| コメント (0)
| トラックバック (0)



最近のコメント