e274.c
深すぎるネストは良くない




修正前
void func( struct *mem10p )
{
if ( mem10p->m1 == ok ) {
if ( mem10p->m2 == ok ) {
if ( mem10p->m3 == ok ) {
if ( mem10p->m4 == ok ) {
~
if ( mem10p->m10 == ok ) {
正常処理 ;
} else {
エラー処理 ;
~
} else {
エラー処理 ;
} else {
エラー処理 ;
} else {
エラー処理 ;
} else {
エラー処理 ;
}
修正後
void func( struct *mem10p )
{
if ( mem10p->m1 != ok ) {
エラー処理 ;
}
if ( mem10p->m2 != ok ) {
エラー処理 ;
}
if ( mem10p->m3 != ok ) {
エラー処理 ;
}
if ( mem10p->m4 != ok ) {
エラー処理 ;
}
~
~
if ( mem10p->m10 != ok ) {
エラー処理 ;
}
正常処理 ;
}
解説
エラー処理は、その場で処理してから returnするか、
関数の終わりに用意した共通エラー処理部に
goto文で飛ばすと良いでしょう。
詳細な説明は、
『Cプログラミング診断室(藤原博文 著)』:12章
を参照してください。