我在这里阅读失眠游戏的编码标准:http://www.insomniacgames.com/core-coding-standard/#id.8a4ef3275bfd并且它提到不使用"魔术值"。我不是在谈论用命名常量替换的魔术数字。
换句话说,不要使用-1表示"无效"或"未设置"。但它并没有告诉你什么是更好的做法。你们做什么的?如果没有检查,你怎么能相信有效的实际有效?我唯一能想到的就是有一个表明它有效或无效的bool,但这看起来很草率。
答案 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
- 现在你知道问题到底是什么了。