次のコードを想像してください。
static char myFlag;
void setFlagTo_1(void)
{
myFlag = 1;
}
char hasFlagChangedTo_1(void)
{
char retval = myFlag;
myFlag = 0;
return retval;
}
という名前の関数をどのように説明しますかhasFlagChangedTo_1
。このアクションをどのように呼び出し/説明しますか?
次のコードを想像してください。
static char myFlag;
void setFlagTo_1(void)
{
myFlag = 1;
}
char hasFlagChangedTo_1(void)
{
char retval = myFlag;
myFlag = 0;
return retval;
}
という名前の関数をどのように説明しますかhasFlagChangedTo_1
。このアクションをどのように呼び出し/説明しますか?
私はそのような関数を呼び出しますretrieveFlag
。
そこにあるときはそれを回収するので、その後はもうそこにはありません。存在しない場合は false を返します。
編集:または単にそれを呼び出しますgetAndResetFlag
-缶に書かれていることを正確に行います.
私は次のように書きます:
void clearFlag(char *oldValue)
{
if (oldValue)
*oldValue = myFlag;
myFlag = 0;
}
関数を呼び出すと、 を渡すことができますNULL
。しかし、変数へのポインターを渡す場合は、その変数に名前を付けて、呼び出しサイトのコードで何が起こっているかを明確にすることができます。
clearFlag(&oldValue);
値を返す関数を使用する際の問題は、通常、返される値の名前でそれらの関数に名前を付けることです。ただし、関数に強い副作用がある場合、それは名前に反映されません。
副作用がある場合は、副作用void
を説明する関数と名前を使用することをお勧めします。
私はそれtestAndClear
をそのtestAndSet-functionsに類似したものと呼びます...
ResetFlag 、フラグ値をリセットしているため