Wann sollte ich Currentculture oder InvarianTCulture angeben, und wann sollte ich es nicht näher bezeichnen?

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

Frage

Was ist die beste Praxis für die Angabe von Stromkulturen oder Invariantenkulturen und die Kultur überhaupt nicht angeben?

Von dem, was ich gelesen habe, wenn Sie beispielsweise eine Serialisierung anführen, benötigen Sie ein Invariantenkulturen als Mittel, um eine kanonische Darstellung eines Datenwerts anzugeben.Das ist ein relativ kleiner Prozentsatz der kulturbasierten String-Manipulationen.

Ich finde es lang, verbroser und hässlich meiste Zeit, um es jedes Mal anzugeben, wenn ich es tue, sagen Sie:

generasacodicetagpre.

Mein Team wurde jedoch kürzlich fxcop gedreht, und jetzt gibt es einen Drücken, um Cultisinfo immer überall zu verwenden.Was ist die beste Technik, um Kürze, Lesbarkeit und Funktionalität zu kombinieren?

ein gutes Lesematerial:

War es hilfreich?

Lösung

Hier gibt es einen inhärenten Kompromiss.

Bei einem Minimum möchten Sie CultureInfo angeben, um invarianteculture, wenn Sie etwas internes Inneres in Ihrem Programm tun, angeben. Zum Beispiel zwingt diese mit der Serialisierung die Datenrepräsentation, um immer gleich zu sein, sollen Sie sich also nicht um Internationalisierungsprobleme mit Ihren internen Datenformaten machen müssen.

Das heißt, das Angeben dieses Überalls hat einige Vorteile - hauptsächlich in Bezug auf das Erzwingen von Ihnen, um sicherzustellen, dass Sie dies korrekt handhaben. Interne Programmarbeit vs. ui-Arbeiten müssen eine andere Kultur festlegen (vorausgesetzt, Sie möchten Ihre Anwendung ordnungsgemäß lokalisieren). Infolgedessen neigt ein komplexes Programm dazu, dass dies überall angegeben wird, da der Verlassen des "Standards" am besten gefährlich ist, und neigt dazu, Fehler im Laufe der Zeit einzuführen.

Wenn Sie dies jedoch angeben, erhöhen Sie jedoch die Größe Ihres Codes, um die Größe Ihres Codes zu erhöhen, und reduzieren möglicherweise die Lesbarkeit. Dies führt zur Kompromisse - Lesbarkeit und Wartbarkeit über einen kürzeren Code gegen ordnungsgemäße Internationalisierung und Lokalisierung und Wartungsfähigkeit durch überallerer.

Meiner Meinung nach gibt es hier keine "richtige" Antwort - es hängt wirklich von Ihrer Anwendung ab. Wenn Ihre Anwendung vollständig zur Präsentation ist, und nicht viel Datenmanipulation, insbesondere nicht mit einer beliebigen Art von selbst verwalteter Dateispeicherung, ist das Einstellen der aktuellen Kultur (und der UI-Kultur) einmal in Ordnung. Ich habe festgestellt, dass jedoch kompliziertere Anwendungen dazu neigen, nicht so gut auf diese Weise zu funktionieren, wobei jedoch die FXCOP-Vorschläge, dies überall anzugeben, attraktiver erscheinen.

Andere Tipps

Der Standard ist bereits die aktuelle Kultur, die von Windows initialisiert wurde.Also mit CultureInfo.CurrentCulture explizit ist nur eine Zeitverschwendung.Jedes anständige Serialisierungsformat (einschließlich Binärer Serialisierung und XML-Serialisierung) wird eine DateTime in einer Kultur invariante Weise serialisieren.

Verwenden einer Kultur, die nicht der Standard ist, ist sehr gefährlich.Ein Thread wird immer mit der Standardkultur gestartet, wie sie von Windows angegeben und vom Benutzer konfiguriert wird, wenn sie Windows installiert hat..NET startet ständig Threadpool-Threads und Sie riskieren riskieren, dass Sie eine Kultur in diesem Thread erhalten, die sich von Ihrem Hauptfaden unterscheidet.Das kann alle subtilen Probleme verursachen.Wie eine sortierte Liste, die plötzlich nicht mehr sortiert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top