2010-11-29 13 views
17

エラーメッセージや通知などのためによく使用する文字列をどこに保存する必要がありますか?どこに定数文字列を格納する必要がありますか?

これは、このグローバルクラスに数値のconstが含まれていましたが、リソースファイルに格納されている箇所もいくつか見てきました。どこに置くのが最適な場所ですか?私は.NETのbtwを使用しています。

答えて

15

Resxは、国際化やインスタンスごとのカスタマイズなど、それらをスワップアウトする必要がある場合に便利です。しかし、それらの間で手動で移動することは非常に難しいことではありません。それは変更する必要がありますか?

私はは言う:あなたはしっかりできるだけスコープとして定数を維持しようと、コード内でそれらを保つを行う場合。たとえば、定数がUserインスタンスにのみ関連する場合は、Userに入力します。

同様に、が変更されない場合は、の変更はresxを乱雑にしてはいけません。たとえば、データベース内の値の意味に関連する内部のよく知られた文字列... がresxを使用してであってもおそらくresxに属していません。

7

あなたの製品を翻訳/ローカライズしたいのであれば、リソースファイルはそれらを保存するのに最適な場所になるでしょう。

私には、両方のメリットとデメリットがあると確信していますが、それは私の頭の中に最初に飛び跳ねるものです。

1

this postを参照してください。そこには、有用な回答とコメントの中での貴重な議論があります。あなたがすべき一般的なルールとして

  • は定数でパブリッククラスを作成する前に二度考えます。
  • リソースファイルにユーザーのメッセージに示す場所(プロジェクトがローカライズが必要になりますときに知っていることはありません)
3

彼らは、このようなタイトルなどなど、あなたのUI要素の一部である場合は、リソースファイルに入れて。

ファイルプレフィックス、内部エラーメッセージ文字列などのプログラム構成要素の一部である場合は、それらを別のコードファイルに入れる必要があります。

3

ローカライズできるものはすべてリソースファイルに入れる必要があります。あなたが100%確実であっても、リソースファイル内の文字列にローカライズする必要はありません。

タイトル、名前、GUIラベル、ダイアログテキスト、エラーメッセージなどはすべてresxに属します。 今すぐやりましょう。アプリケーションをローカライズする必要がある場合、将来の開発者はあなたに感謝します。

他の定数はもう少し難しいです。私は硬い&ファーストルールがあるとは思わないが、一般的に私は必要な範囲の小さなものとしてconstとして "真の"定数を定義しようとする。真の定数では、アプリケーションのライフタイムの範囲を変更することはまずありません。カプセル化を破る傾向があるので、ローカライズされていない文字列にリソースファイルを使用するのは嫌です。たとえば、PKDB2関数のサイズが必要です。これは、ローカルで定義する必要があります。暗号オブジェクトの外の誰もそれが何であるかを知る必要はありません。

関連するトピックが表示されます。現在は静的であるが将来変更される可能性のあるもの(将来のバージョンのアプリケーションでさえ)は、読み込み専用として宣言する必要があります。これらはresxからロードすることができますが、私は個人的には行いません。 C#は項目#2でこれをカバーします。

また、あなたの会社やチームが必要とするものはたくさんあります。私はリソースファイルに何も含まれていなかったチームや、すべてのもの(ローカルに定義する必要があったものさえも)がリソースファイルに保存されていたチームでした。

+0

真(+1)ですが、ローカライズは*単なる*テキストだと考えるのはちょっと人工的です。特に、物事を正しく適合させるために必要なレイアウト変更があるかもしれませんが、微妙な問題の全体的なホスト*があります。 –

+1

合意。質問は文字列に範囲を限定したので、それは私の答えがカバーしたものです。あなたが正しいです;ローカリゼーションのために変更できるものは、resxに入れてください。より微妙な点の多くを実現するには、ローカリゼーションの経験が必要です。少なくともそれは私と同じでした。 –

関連する問題