<分区>
当我编写用户定义函数时,如果函数成功,我应该返回 0 还是非空值?
如果我的函数成功,我个人喜欢返回 0,但我总是看到错误处理更像 (!var)
而不是 (var != NULL)
.那么,即使在非 bool 情况下,返回一些值(如 1
)是否更好?
Stack Overflow 有什么建议?
我问的原因是因为我为 WINAPI BOOL CreateProcessW
编写了一个非 bool 包装器,它丢弃了我的代码,因为我在包装器中返回 0
在我检查 TRUE
之前。
我发现成功时返回非零值更容易,因为这样你就可以这样说:
int result = foo()
if (!result) { .. }
这在意图上更加清晰。通常在异常或错误情况下返回 NULL,因此在成功时返回 NULL 是违反直觉的。
但是,更好的解决方案是对所有错误代码使用枚举并对照这些代码进行检查,而不是使用类似 !result
的东西。当有多个错误代码时,这也可以让您很好地处理这种情况。