古い、ひどく書かれたエラーメッセージのテキストの一部を変更しています。優れたエラーメッセージを作成するためのベストプラクティス(特にWindows XP / Vistaの場合)のリソースは何ですか。
12 に答える
エラー メッセージの表現に関しては、次の Windows アプリケーションのスタイル ガイドを参照することをお勧めします。
- Windows ユーザー エクスペリエンスのガイドライン、特にエラー メッセージに関するセクションはこちらです。
- マイクロソフト マニュアル オブ スタイル
究極のベストプラクティスは、ユーザーが最初にエラーを引き起こさないようにすることです。
ユーザーが気にしないことは何も言わないでください。エラーコード5064は、誰にとっても意味がありません。彼らが何か間違ったことをしたと彼らに言わないでください。そもそもそれを禁止します。特にあなたのソフトウェアが犯した間違いのために、彼らを責めないでください。何よりも、問題が発生した場合は、問題を修正して作業を進められるようにする方法を説明してください。
セキュリティ上の理由から、ユーザーが必要としない内部システム情報を提供しないでください。
簡単な例:ログインに失敗した場合、ユーザー名が間違っているのか、パスワードが間違っているのかをユーザーに知らせないでください。これは、攻撃者がシステムをブルートフォースするのに役立つだけです。代わりに、「ユーザー名とパスワードの組み合わせが無効です」などと言ってください。
適切なエラー メッセージは次のとおりです。
- 目立たないようにする (ブルー スクリーンやイエロー スクリーンが表示されないようにする)
- 問題を解決するための指示をユーザーに与える (可能であれば自分で、または誰に連絡して助けを求めるか)
- 役に立たない難解なプログラマーのナンセンスを隠します (「45 行目で null 参照例外が発生しました」とは言わないでください)。
- 冗長にならないように説明してください。ユーザーが知る必要があることを伝えるのに十分な情報であり、それ以上のものはありません。
私が始めたことの 1 つは、エラー メッセージに表示する一意の番号を生成し、ログ ファイルに書き込むことです。これにより、ユーザーがスクリーンショットを送信したり、電話をかけたりして、「私はエラーが発生しました。照会番号は 0988-7634 と表示されています」
エラーを修正するための提案を常に含めてください。
問題を修正するようにソフトウェアを作成する方法を考えてみてください。
ユーザー入力 (文字列、ファイル名、値など) については、常に誤った値を区切り文字 (引用符、括弧など) で囲んで表示します。例えば
入力したファイル名が見つかりませんでした: "somefile.txt"
これにより、侵入した可能性のある空白/キャリッジ リターンが表示され、トラブルシューティングやフラストレーションが大幅に軽減されます。
- 異なる場所から同じエラー メッセージが表示されることは避けてください。可能であれば file:line でパラメータ化するか、開発者がエラーが発生した場所を一意に特定できる他のコンテキストを使用してください。
- 特に商用製品の場合は、簡単にローカライズできるようにメカニズムを設計してください。
- エラー メッセージがユーザーに表示される場合は、コードの詳細な知識を前提としない完全で意味のある文にします。常に問題に近づきすぎていることを忘れないでください。ユーザーはそうではありません。可能であれば、続行方法、連絡先などについてユーザー ガイダンスを提供します。
- 可能であれば、すべてのエラーにメッセージが必要です。そうでない場合は、すべてのエラー アンワインド パスが最終的に何が起こったかを明らかにするエラー メッセージに到達することを確認してください。
ここには他にも良い答えがあると確信しています...
より短いメッセージが実際に読み取られる場合があります。
エラー メッセージが長ければ長いほど、ユーザーは読みにくくなります。そうは言っても、明らかな応答がある場合に例外を排除できるように、コードのリファクタリングを試みてください。ユーザーまたはコードの制御が及ばないことに基づいて発生する例外のみを持つようにしてください。
最良の例外メッセージは、表示する必要がないものです。
エラー処理は常にエラー報告よりも優れていますが、エラーメッセージを改造していて、必ずしもコードを修正しているとは限らないため、ここにいくつかの提案があります:
ユーザーは問題ではなく解決策を求めています。メッセージが「現在のウィンドウを閉じて、操作をやり直してください」のような単純なものであっても、エラーの後に何をすべきかを彼らが理解できるようにします。
私はまた、エラーの集中ログ記録の大ファンでもあります。ログが人間とコンピューターの両方でスキャン可能であることを確認してください。ユーザーは、特に「回避」できる場合は特に、どのような問題が発生しているかを常に通知するとは限りません。そのため、ログは修正が必要なものを知るのに役立ちます。
エラー ダイアログを簡単に制御できる場合は、エラー番号やトレースなどを表示する「詳細」ボタンを備えた読みやすいメッセージを表示するダイアログを用意すると、リアルタイムの問題解決にも大きな助けとなります。
多言語のサポートはあらゆる種類のメッセージに適用されますが、エラー メッセージの場合は忘れられがちです。
次に、数値エラー コードのような役に立たない難解な情報をユーザーに伝えません。ただし、技術に精通した人がトラブルシューティングを行うために、その情報を確実にログに記録するように言ってください。