2010-12-11 7 views
4

私は仕事中に新しいプロジェクトに取り組んでいました。今日、同僚が私の例外や返されたエラーメッセージが完全にローカライズされるべきであるという考えを持ち出しました。おそらくそれは良いアイデアだと思っていたが、彼はエラーコードを返すだけでよいはずだと言った。それは彼らが適合しないエラー・コードを再利用するには、他のプログラマーエラーコードを使用するか使用しないか

  1. のいずれかを作る傾向があるとして、彼らは別のもの
  2. 彼らを追加したくないので、私は個人的には、エラーコードのアイデアをたくさん好きではありません非常に多く定義される可能性があるので、誤ったエラーコードを使用する傾向があります。

私の質問は、他の誰もがこのような状況に対処していますか?私は、エラーコードが行く方法だと思う人も含めて、あらゆる種類の提案をしています。

答えて

3

コーディング言語に応じて、文化的な違いがあるかもしれませんか?例えばJavaでは

は、数値誤差コードが


に関しては例外...あまり使用されていない、私はそれだけの技術的なツールであると考えています。 重要なことは、あなたのメッセージがユーザーまたは開発者をターゲットにしているかどうかです。 複数の言語が表示されている場合や、再コンパイルせずにメッセージを変更できるようにする(クライアント間でカスタマイズして、変化するユーザーニーズに対応するために)、メッセージのローカライズは重要です。


私のプロジェクトでは、すべての固定値のコレクションを処理するために(java)enumsを使用しています。 エラーは同じです。エラーの 列挙型は、提供することができます:

  • 強い型付け(あなたがエラーコードを期待するメソッドに何かを渡すことはできません)
  • 、単純なローカライズ(簡単なユーティリティメソッドごとに自動的に対応するメッセージを見つけることができますが(例: "SimpleClassName"、 "INSTANCE_NAME"パターン)、インプリメンテーションをユーティリティメソッドに委譲する各列挙体でgetMessage()メソッドを公開することもできます)
  • ユニットテストがループする可能性がありますコードおよびファイル上の各言語について、一致しない値をすべて見つける)
  • エラーレベルfunctionnality(ロギングと同じレベルを使用します:fatal、error、warn;ロギングの決定は非常に簡単に実装されます!)。
  • 他の開発者が適切なエラーを見つけやすくするために、いくつかの列挙型(場合によっては同じパッケージ内)を使用して、技術的または機能的なドメインに従ってエラーを分類します。あなたの2つの懸念住所にするに

:1を追加

  1. は列挙にインスタンスを追加し、ローカライゼーション・ファイル内のメッセージが必要です(ただし、忘れてしまった場合のテストは後をキャッチすることができます) 。
  2. いくつかの列挙型、場合によってはjavadocでの分類では、正しいエラーを使用するように指示されます。
3

ローカライゼーションにエラーコードを使用しません。エラーコードを使用する理由がある場合があります(特定の種類のエラーが発生したかどうかをテストできるなど)が、ローカリゼーションはその理由の1つではありません。代わりに、メッセージローカライゼーションの残りの部分で例外と同様のフレームワークを使用します。例えば。他の場所でgettextを使用する場合は、例外でもgettextを使用してください。そうすれば、翻訳者の生活が楽になります。

2

には、例外であるにエラーコードを含めることができます。その結果、両方の機能を最大限に活用できます。

旧式の関数戻りエラーコードでエラーが頻繁に発生する原因の1つは、後続のコードを続行する前にエラーコードをチェックできなかったことです。例外を暗黙的に無視することはできません。エラーの原因を取り除くことは良いことです。

エラーコードができますエラーの異なる種類を区別するためにコードを呼び出す

  • 非UI、ローカライズされていないコードでエラーが発生した場合のUIコンポーネントによって構築されるメッセージ。
  • ユーザーマニュアルの作成やトラブルシューティングガイドの作成に役立つ可能性のあるエラーの一覧です。

私が有用であることが分かってきたいくつかのガイドライン:

  • のみUIアーキテクチャの層は、ユーザーにメッセージを構築し、ローカライズ。
  • UI以外のレイヤーが例外を介してエラーを通知する場合、メッセージ作成時にUIに役立つエラーコードと追加のフィールドが必要に応じて渡されることがあります。
  • Javaでは、UIレイヤーの列挙型でエラーコードが定義されている場合、エラーメッセージ形式の文字列に列挙子自体からアクセスできます。それらはエラーで運ばれた追加データのためのシンボルを含んでいるかもしれません。
  • Javaでは、元の言語の書式文字列の書式指定子に引数インデックスを含めることで、翻訳者がローカライズされたメッセージで動的データを移動できるようにします。
関連する問題