以下哪种方案更受欢迎?
在需要时在代码中包含错误消息:
cout << "I am an error message!" <<endl; exit(-1);
在单独的头文件中定义错误消息:
#include "ErrorMessages.h" cout << ERRORMESSAGE_1 <<endl; exit(-1);
创建一个包含错误消息的函数。
在这些消息中包含唯一错误 ID 是否也很常见?
以下哪种方案更受欢迎?
在需要时在代码中包含错误消息:
cout << "I am an error message!" <<endl;
exit(-1);
在单独的头文件中定义错误消息:
#include "ErrorMessages.h"
cout << ERRORMESSAGE_1 <<endl;
exit(-1);
创建一个包含错误消息的函数。
在这些消息中包含唯一错误 ID 是否也很常见?
这完全是一个偏好问题,既有好处也有坏处。
错误位置的硬编码字符串文字可能更难维护,但在我看来,它也更容易阅读。
例如
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, ...";
...
或者
// 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
这取决于您是否对应用程序有本地化要求。如果这样做,您希望将所有字符串放在一个位置,包括错误消息。如果您没有这样的要求,我更喜欢将消息内联(您的第一个示例)。这样,如果我想找到抱怨的代码,我可以 grep 消息。