以下哪种替代方案更受青睐?
在代码中包含错误消息:
cout << "I am an error message!" <<endl;
exit(-1);
在单独的头文件中定义错误消息:
#include "ErrorMessages.h"
cout << ERRORMESSAGE_1 <<endl;
exit(-1);
创建一个包含错误消息的函数。
在这些消息中包含唯一错误ID也很常见吗?
答案 0 :(得分:4)
这既是利益又是垮台的优先事项。
错误网站上的硬编码字符串文字可能难以维护,但在我的诚实意见中也更容易阅读。
例如
cout << "You were unable to login. "
<< "Please check you're user name and password and try again"
<< endl;
显示意图比
好很多cout << LOGIN_CREDENTIALS_ERROR << endl;
但是,不对邮件进行硬编码的优势(2
和3
):
//Foo.cpp:
cout << DIVIDE_BY_ZERO_ERROR << endl;
//Bar.cpp
cout << DIVIDE_BY_ZERO_ERROR << endl;
// If you want to change DIVIDE_BY_ZERO_ERROR text you only have to do it once
//ErrorMessages.h (Ops grammar needs correcting)
const std:string DIVIDE_BY_ZERO_ERROR = "Dont not divide by zero";
此外,如果错误消息可能会发生变化:
// ErrorMessages.h
#ifdef LOCALIZATION_EN
const std:string FRIENDLY_ERROR = "Hello, you are doing something wrong";
#elseif LOCALIZATION_FR
const std:string FRIENDLY_ERROR = "Bonjour, ...";
...
OR
// ErrorMessages.h
#ifdef DEBUG
const std:string SOME_ERROR = "More detailed error information for developers"
#else
const std:string SOME_ERROR = "Human friendly error message"
#endif
答案 1 :(得分:1)
这取决于您的应用程序是否具有本地化要求。如果这样做,您希望将所有字符串放在一个位置,包括错误消息。如果您没有这样的要求,我更喜欢将消息内联(您的第一个示例)。这样,如果我想找到抱怨的代码,我可以只是grep这条消息。