CurrentCultureまたはInvariantCultureを指定する必要がある場合は、いつ予定されておくべきですか?

StackOverflow https://stackoverflow.com/questions/3231386

質問

CurrentCultureまたはInvariantCultureを指定し、文化をまったく指定していないののベストプラクティスは何ですか?

読んだことから、シリアル化を行っている場合は、データ値の正規表現を指定する手段としてInvariantCultureが必要です。それは比較的小さいパーセンテージの文化ベースの弦操作です。

私はそれを長く、冗長、そして醜いほとんどの場合、私がするたびにそれを指定するために、それを指定するために、

var greeting = string.Format(CultureInfo.CurrentCulture, "Hello ", userName); 
.

しかし、私のチームは最近FXCOPをオンにしました、そして今や常にCultureInfoを常に使用するためのプッシュがあります。簡潔さ、読みやすさ、および機能性を組み合わせるための最良の技術は何ですか?

いくつかの良い読み物素材:

役に立ちましたか?

解決

ここでプレイに固有のトレードオフがあります。

最低限の場合は、プログラム内で内部を作成しているときはいつでもInvariantCultureを使用するようにCultureInfoを指定します。たとえば、シリアル化でこれを使用すると、データ表現が常に同じになるように強制するので、内部データ形式の国際化の問題について心配する必要はありません。

言っていると言われていることは、ここでもいくつかの利点を持っています - 主にあなたが正しく取り扱うようにあなたを強制的に強制することによって。内部プログラム作業対UI作業には、異なる文化が指定されている必要があります(アプリケーションを正しくローカライズしたい場合)。その結果、「デフォルト」を最善で危険なものとすると、複雑なプログラムはどこにでも指定されることを要求し、時間の経過とともにバグを紹介する傾向があります。

しかし、これを指定すると、あなたが気づいたように、あなたのコードのサイズを大きくする傾向があり、そして読みやすさを減らす傾向があります。これは、より短いコード対適切な国際化とローカライゼーションと保守可能性を介して、トレードオフ - 読みやすさと保守性につながります。

私の意見では、ここで「正しい」答えはありません - それは本当にあなたのアプリケーションによって異なります。あなたのアプリケーションがプレゼンテーションについて完全にプレゼンテーションのことで、特に多くの種類の自己管理ファイルストレージではない場合は、現在の文化(およびUI文化)を一度設定することができます。しかしながら、より複雑なアプリケーションはこのファッションでも動作しない傾向があることを発見しましたが、この場合、これを特定するFXCOPの提案はより魅力的です。

他のヒント

デフォルトはすでにWindowsによって初期化された現在の文化です。そのため、CultureInfo.currentCultureを明示的に使用することは単なる時間の無駄です。まともなシリアル化フォーマット(バイナリシリアル化とXMLシリアル化を含む)は、文化不変的な方法でDateTimeをシリアル化します。

デフォルトではない文化を使用することは非常に危険です。スレッドは、Windowsで指定され、Windowsがインストールされたときにユーザーが設定するように、常にデフォルトの文化で開始されます。.NETスレッドプールスレッドをずっと起動し、メインスレッドとは異なるそのスレッドで文化を取得するリスクがあります。これはすべての微妙な問題を引き起こす可能性があります。突然ソートされていないソートリストを持つように。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top