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;

ただし、メッセージをハードコーディングしないことのプラス面 (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
于 2013-05-26T19:09:31.150 に答える
1

アプリケーションのローカリゼーション要件があるかどうかによって異なります。その場合、エラー メッセージを含め、すべての文字列を 1 か所にまとめる必要があります。そのような要件がない場合は、メッセージをインラインに配置することをお勧めします (最初の例)。そうすれば、不平を言っているコードを見つけたい場合は、メッセージを grep するだけで済みます。

于 2013-05-26T18:52:51.280 に答える