9

以下哪种方案更受欢迎?

  1. 在需要时在代码中包含错误消息:

    cout << "I am an error message!" <<endl;
    exit(-1);
    
  2. 在单独的头文件中定义错误消息:

    #include "ErrorMessages.h"
    cout << ERRORMESSAGE_1 <<endl;
    exit(-1);
    
  3. 创建一个包含错误消息的函数。

在这些消息中包含唯一错误 ID 是否也很常见?

4

2 回答 2

6

这完全是一个偏好问题,既有好处也有坏处。

错误位置的硬编码字符串文字可能更难维护,但在我看来,它也更容易阅读。

例如

cout << "You were unable to login. "
     << "Please check you're user name and password and try again"
     << endl;

显示意图比

cout << LOGIN_CREDENTIALS_ERROR << endl;

但是,不对消息进行硬编码的好处(23):

//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
于 2013-05-26T19:09:31.150 回答
1

这取决于您是否对应用程序有本地化要求。如果这样做,您希望将所有字符串放在一个位置,包括错误消息。如果您没有这样的要求,我更喜欢将消息内联(您的第一个示例)。这样,如果我想找到抱怨的代码,我可以 grep 消息。

于 2013-05-26T18:52:51.280 回答