替代使用-1表示无效值

时间:2014-03-23 21:01:36

标签: coding-style

我在这里阅读失眠游戏的编码标准:http://www.insomniacgames.com/core-coding-standard/#id.8a4ef3275bfd并且它提到不使用"魔术值"。我不是在谈论用命名常量替换的魔术数字。

换句话说,不要使用-1表示"无效"或"未设置"。但它并没有告诉你什么是更好的做法。你们做什么的?如果没有检查,你怎么能相信有效的实际有效?我唯一能想到的就是有一个表明它有效或无效的bool,但这看起来很草率。

2 个答案:

答案 0 :(得分:0)

实际上,如果您阅读下一段,他们告诉您他们认为更好的做法:

  

“对于具有离散枚举值的事物,例如id,具有&#34的无效标记;无效"没关系,但要保持明确的常数。例如,在旧的动态联合代码中编码DYN_JOINT_ID_INVALID(0xffffffff)是对sentinel值的适当使用。“

根据具体情况,是否可以根据自己的意愿返回唯一的错误代码,这比返回负值更可取,这是一个成熟的习惯用法。他们甚至没有提及的例外情况可能是更好的选择。但理论上最好的选择可能是非常不相关的:他们已经做出了决定,大概是有充分理由的,并把它放在他们必须要忍受的编码标准中。

答案 1 :(得分:-1)

您可以使用enum返回更有意义的更好的值。 enums真的只是给出数字名称。

enum Errors {
    NO_DATA_RECIEVED
    COMPUTER_ON_FIRE
    WIFI_OFF
}

您可以使用它:

throw COMPUTER_ON_FIRE;

在错误处理程序中:

if(error == COMPUTER_ON_FIRE)
     displayDialog("Grab a fire extinguisher!");

这比程序员提供的信息要多于return -1 - 现在你知道问题到底是什么了。