3

"en"プロジェクトの1つをリファクタリングしているときに、"de"Stringsなどのすべての言語ISOコードをLocaleクラスとその定数Locale.ENGLISHに置き換え、Locale.GERMANリファクタリングをさらに保存してエラーソースを最小限に抑えました。次にlocale.getLanguage()を使用して、ISOコードを文字列として取得します。

このアプローチで私が抱えている問題は、国とバリアントフィールドの形式でのロケールクラスのオーバーヘッドです。このオーバーヘッドを回避するために、独自の言語クラスを作成することを検討しています。

カスタムクラスを使用するのは良い習慣ですか、Languageそれとも私が見逃した専用のクラスがすでにありますか?

4

2 に答える 2

10

あなたはプログラミングの基本原則の1つを逃しました:車輪の再発明をしないでください。

はい、Localeクラスは必要以上のことを行うことができますが、通常、オーバーヘッドはごくわずかです。また、これを使用すると、他のコーダーがコードのその部分を即座に理解できるようになります。

于 2012-09-04T08:55:39.183 に答える
2

オーバーヘッドはそれほど高くありません。これにより、すべてのロケールが取得されます。

long start = System.currentTimeMillis();
for (Locale l : Locale.getAvailableLocales())
    l.toString();
long time = System.currentTimeMillis() - start;
System.out.println(time + " ms.");

プリント

15 ms.
于 2012-09-04T08:57:43.113 に答える