在特殊情况下使用保留变量值是不好的做法吗?

时间:2013-02-22 11:30:30

标签: variables

我听过故事的两端。一种观点是使用数值变量的特殊值来表示特殊状态是设计缺陷。但是,我一直都会遇到这种情况。

一个例子是字节无符号整数,其中值255表示缺少信息。

这是一种不好的做法吗?如果是这样,在什么特殊情况下允许/鼓励?

2 个答案:

答案 0 :(得分:1)

这在很大程度上取决于情况;一如既往,努力把事情写成最简单,最容易理解的方式。希望特殊情况处理不会使正常情况下的代码混乱(这是异常背后的想法,但它们会造成自己的混乱......)。

选择用于特殊情况的值时要小心。例如,C / Unix约定使用了这一点,但请确保使用“不可能”的值。因此,getchar(3)将字符代码作为int返回,但会为文件末尾返回非字符EOF。类似地,read(2)返回读取的字符数(如果没有要读取,则可以为0),或者出错时为-1。

答案 1 :(得分:0)

这绝对不是是一种不好的做法,假设你可以负担得起,即可表示整数的范围有足够的额外值,你永远不需要在现实生活中使用。

例如,如果你需要一系列无符号字节,包括255,那么给255一个新的含义" unknown"会是个问题。如果255从未用于"真实"数据,然后您可以随意分配任何您想要的含义。

然而,错误的是在整个代码中使用特殊数字而没有为它们指定特殊名称。例如,

if (myByte == 255) {
    // Process the situation when the value is unknown
}

毫无疑问是坏事。您应该命名所有特殊常量,并在整个代码中仅使用这些名称:

if (myByte == UNKNOWN_VALUE) {
    // You can skip the comment about processing an unknown value:
    // the name of the constant tells your readers what's going on.
}