-1

想象一下下面的代码:

static char myFlag;

void setFlagTo_1(void)
{
  myFlag = 1;
}

char hasFlagChangedTo_1(void)
{
  char retval = myFlag;

  myFlag = 0;

  return retval;
}

如何描述名为hasFlagChangedTo_1. 你会如何称呼/描述这个动作?

4

4 回答 4

2

我会这样写:

void clearFlag(char *oldValue)
{
    if (oldValue)
        *oldValue = myFlag;
    myFlag = 0;
}

当您调用该函数时,您可以通过NULL. 但是,如果您传递一个指向变量的指针,您可以命名该变量,以便调用站点上的代码清楚地表明正在发生的事情。

clearFlag(&oldValue);

使用返回值的函数的问题在于,您通常使用返回值的名称来命名这些函数。但是,如果该功能具有强烈的副作用,则不会在名称中体现出来。

当有副作用时,使用void描述副作用的函数和名称通常是个好主意。

于 2012-12-19T12:38:03.317 回答
2

我会调用这样的函数retrieveFlag

当它在那里时,你会检索它,所以之后它就不再存在了。当它不存在时,它返回 false。

编辑:或者只是称呼它getAndResetFlag-完全按照锡上所说的那样做。

于 2012-12-19T12:40:32.890 回答
1

我将其称为testAndCleartestAndSet 函数的模拟...

于 2012-12-19T12:42:03.763 回答
0

ResetFlag , 因为它正在重置标志值

于 2012-12-19T12:40:54.913 回答