如何处理内部数据

时间:2018-11-02 11:05:57

标签: c c89

我想写一个限制系统。

  • 用户可以使用extendCmd()retractCmd()来扩展或缩回对象。
  • 他可以通过将对象扩展到某个点并调用setMaxExtension()来设置最大扩展名。设置该值时,如果对象长于设置值,则可能不会扩展
  • 他可以clearMaxExtension()
  • calculateExt()使用多个传感器来获取值

为此,我必须在内部保存扩展名(不必将数字值提供给用户)。

我想出了以下设计(为了清晰起见,删除了粗略的轮廓,返回值和所需的参数):

static int maxExt;
static bool MaxIsSet;

static void extend(){...};
static void retract(){...};
static void calculateExt(){...};

void extendCmd()
{
  const int currentExt = calculateExt();
  if( !maxIsSet || !(maxExt < currentExt))
  {
    extend();
  }
}

void retractCmd()
{
  const int currentExt = calculateExt();
  if( currentExt > 0 )
  {
    retract();
  }
}

void setMaxExtension()
{
  maxExt = calculateExt();
  maxIsSet = true;
}

void clearMaxExtension()
{
  maxExt = 0;
  maxIsSet = false;
}

这样,我将所需的函数公开给主程序,并为内部变量设置了诸如get和set之类的东西。

在当前的实践中,可以在翻译单元范围内使用变量并直接使用它们吗?还是应该将它们作为函数的参数传递?

我也可以将所有内容包装在一个函数中,并自己处理信号,但是我更喜欢上面的东西。

0 个答案:

没有答案