アカウント名:
パスワード:
たとえば3つの逐次処理があって、エラーなら次に進まないとすると、gotoなしだとif (処理1が成功) { if (処理2が成功) { if (処理3が成功) { } }}となって逐次処理なのにネストっぽくなってしまう。ホントの条件分岐やループがあったら取り返しの付かない深さに。
if (処理1が失敗) { goto エラー終了}if (処理2が失敗) { goto エラー終了}if (処理3が失敗) { goto エラー終了}
のほうがやりたいことがストレートに書ける気がするんだ。実際、今回のコードもこんな感じ。
個人的には、そういう時はメソッドを分けてしまうな。
BOOL funcA(){ if(!funcB() ){ // エラー処理 return FALSE; } return TRUE;}
BOOL funcB(){ if (処理1が失敗) { return FALSE; } if (処理2が失敗) { return FALSE; } if (処理3が失敗) { return FALSE; } re
funcA()の後始末が別の関数になるのは抵抗あるなぁ。errorReport()が他所からも呼べる状態なのも。エラー処理はgoto使ってもfuncA()に入れておいたほうがカプセル化という点で優位な気が。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
goto 使う派 (スコア:0)
たとえば3つの逐次処理があって、エラーなら次に進まないとすると、gotoなしだと
if (処理1が成功) {
if (処理2が成功) {
if (処理3が成功) {
}
}
}
となって逐次処理なのにネストっぽくなってしまう。
ホントの条件分岐やループがあったら取り返しの付かない深さに。
if (処理1が失敗) {
goto エラー終了
}
if (処理2が失敗) {
goto エラー終了
}
if (処理3が失敗) {
goto エラー終了
}
のほうがやりたいことがストレートに書ける気がするんだ。
実際、今回のコードもこんな感じ。
Re: (スコア:0)
個人的には、そういう時はメソッドを分けてしまうな。
BOOL funcA()
{
if(!funcB() ){
// エラー処理
return FALSE;
}
return TRUE;
}
BOOL funcB()
{
if (処理1が失敗) {
return FALSE;
}
if (処理2が失敗) {
return FALSE;
}
if (処理3が失敗) {
return FALSE;
}
re
Re:goto 使う派 (スコア:0)
funcA()の後始末が別の関数になるのは抵抗あるなぁ。
errorReport()が他所からも呼べる状態なのも。
エラー処理はgoto使ってもfuncA()に入れておいたほうがカプセル化という点で優位な気が。