Es gibt einen inhärenten Kompromiß hier im Spiel.
Sie sollten mindestens CultureInfo angeben, um InvariantCulture zu verwenden, wenn Sie interne Vorgänge in Ihrem Programm ausführen. Wenn Sie dies beispielsweise mit Serialisierung verwenden, ist die Datendarstellung immer gleich, sodass Sie sich keine Sorgen über Internationalisierungsprobleme mit Ihren internen Datenformaten machen müssen.
Dies gesagt, hat die Angabe dies überall einige Vorteile - vor allem in Bezug auf Sie zwingt, um sicherzustellen, dass Sie dies richtig behandeln. Für interne Programmarbeit und für die Benutzeroberfläche muss eine andere Kultur angegeben werden (vorausgesetzt, Sie möchten Ihre Anwendung ordnungsgemäß lokalisieren). Dies führt dazu, dass ein komplexes Programm dazu neigt, dies überall zu spezifizieren, da das Verlassen des "Standards" bestenfalls gefährlich ist und dazu neigt, Fehler im Laufe der Zeit einzuführen.
Wenn Sie dies jedoch angeben, erhöht sich die Größe Ihres Codes und die Lesbarkeit wird möglicherweise beeinträchtigt. Dies führt zu einem Kompromiss - Lesbarkeit und Wartbarkeit durch einen kürzeren Code vs. korrekte Internationalisierung und Lokalisierung und Wartbarkeit durch expliziteres Auftreten überall.
Meiner Meinung nach gibt es hier keine "richtige" Antwort - es hängt wirklich von Ihrer Anwendung ab. Wenn es bei Ihrer Anwendung ausschließlich um die Präsentation geht und nicht viel Datenmanipulation durchgeführt wird, insbesondere nicht bei jeder Art von selbst verwaltetem Dateispeicher, kann das Einstellen der aktuellen Kultur (und der ui-Kultur) einmalig sein. Ich habe festgestellt, dass kompliziertere Anwendungen auf diese Weise nicht so gut funktionieren. In diesem Fall scheinen die Vorschläge von FxCop, dies überall zu spezifizieren, attraktiver zu sein.
@Reed Copsey: Ich habe auch festgestellt, dass das Hinzufügen von überall als FxCop Reflex Fehler verursacht - mehrmals habe ich Instanzen gesehen, wo die falsche Kultur-Option angegeben wurde. Dies ist offensichtlich nur ein Bildungsproblem, aber es ist ein häufiges Vorkommnis, wenn etwas wie FxCop Ihnen sagt, dass Sie Dinge tun sollen, aber Sie verstehen nicht unbedingt warum. –
@ Scott: Wahr. Aber das ist bei allem Programmieren der Fall - wenn Sie es benutzen wollen, müssen Sie es verstehen oder es wird Sie beißen. Der einzig vernünftige Weg zur Lokalisierung besteht darin, sie beim Schreiben des Codes zu berücksichtigen. Die Lokalisierung eines fertigen Produkts ist eine der schlimmsten Aufgaben und eine Größenordnung, die teurer ist, als von Anfang an darüber nachzudenken. –
Ich stimme nicht zu. Würde ich die Kultur in alle ToString() meiner Klassen setzen? Ich denke, Logik und Objekte sollten sich der Kultur nicht bewusst sein. – onof