2

callscript(疑似コードで)呼び出す 2 つの方法を次に示します。

重複呼び出しの使用

if flag == true
    flag = false
    callscript
    flag = true
else
    callscript
endif

追加の変数を使用する

flag2 = flag
flag = false
callscript
flag = flag2

条件

  • スクリプトが呼び出されるときでflagあることを確認する必要があります。false
  • また、flag値を元の値に戻す必要があります。

これら2つよりもこれを行うためのより良い方法はありますか? そうでない場合、これらのうちどれがより良い選択ですか?

4

6 に答える 6

5

フラグとメソッドの関係が明確になるように、呼び出しでフラグを送信するのが最善です。

callscript(false)

それがオプションではなく、2 つのどちらかを選択する必要がある場合は、どちらかを選択します。明確な勝者はありません。読みやすさはどちらもほぼ同じなので、好みの問題です。

2 番目のオプションは、実際の呼び出しが複雑でコード内で繰り返したくない場合、またはデータ型がブール値よりも複雑な場合に適しています。

于 2010-09-29T10:55:31.790 に答える
4

バリアント 2 を使用して、変数の名前を変更して、もう少し理解しやすくします。

saved_flag = flag
flag = false
callscript
flag = saved_flag
于 2010-09-29T10:34:00.017 に答える
1

flag2 に適切な方法で名前を付けると (

backupValueOfFlag = flag
flag = false
callscript
flag = backupValueOfFlag

) 何をしているのか、なぜそれをしているのかがより明確になります。

于 2010-09-29T10:33:38.367 に答える
0

これが、ローカル変数とサブルーチンのパラメーターが発明された理由だと思います。

本当にグローバルで作業する必要がありますか?

于 2010-09-29T10:33:45.727 に答える
0

私は2番目のものを選びます。最初のものは私にとってあまりにも人工的です -ifプログラムフローのためではなく、フラグ値を保持するためのものです。

于 2010-09-29T10:33:46.430 に答える
0

私にとっては、より良い選択が最初のものです。より読みやすく、そこで何が起こっているのかがより明確になるからです。

于 2010-09-29T10:33:50.017 に答える