我想写一个限制系统。
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之类的东西。
在当前的实践中,可以在翻译单元范围内使用变量并直接使用它们吗?还是应该将它们作为函数的参数传递?
我也可以将所有内容包装在一个函数中,并自己处理信号,但是我更喜欢上面的东西。