7

フォームについての簡単な質問です。

さまざまなエラー メッセージをログに記録していますが、ログ コール内でメッセージ用の新しい文字列を作成するか、他の文字列定数を格納するために使用しているインターフェイス内で定数文字列を作成して、それを参照するだけにするべきか迷っています。私はコードアナライザーコードを使用していましたが、文字列定数を作成して参照する方が良い方法であると後者をほのめかしました。文字列が一度しか使用されていない場合でも。これが本当に当てはまるのだろうか?

前もって感謝します

4

2 に答える 2

3

どのアナライザー ツールを使用しているか、どのように構成したかはわかりませんが、アドバイスは無効に思えます。Java コンパイラはすでに文字列定数を作成しています (通常、コードが log メソッドを呼び出すとき、新しい String インスタンスは割り当てられません)。では、この作業を手動で行うポイントは何でしょうか?

文字列定数をインターフェイスに入れると、それらをクラス間で共有できますが、あなたが思っている方法では共有できません: Java コンパイラは、定数の値を、それが使用されているコードにコピーします (したがって、結果のバイト コードにはインターフェイスへの参照はもうありません!)

私の提案: この誤解を招く警告をオフにします。

于 2013-03-12T13:52:55.047 に答える
2

ロギングは簡単に追加および削除できる必要があります。非常に薄い層を提供するだけです。そして、MessageFormats が使用されている可能性があります。これは、定数名に置き換えるとエラーが発生しやすく、チェックできなくなります。

また、文字列定数がインポートされ、定数が変更されたときに変更を検出する必要がなくなります。

また、ログ文字列はそれほど厳密ではなく、それ自体が有益です。

これらの文字列を国際化不可としてマークすることをお勧めします。

于 2013-03-12T13:55:18.817 に答える