Hay un equilibrio inherente a juego aquí.
Como mínimo, querrá especificar CultureInfo para usar InvariantCulture cada vez que haga algo interno dentro de su programa. Por ejemplo, usar esto con Serialización obliga a que la representación de los datos sea siempre la misma, por lo que no tiene que preocuparse por los problemas de internacionalización con sus formatos de datos internos.
Dicho esto, especificar esto en todas partes tiene algunas ventajas, principalmente en términos de obligarlo a asegurarse de que está manejando esto correctamente. El trabajo del programa interno frente al trabajo de la interfaz de usuario debe tener una cultura diferente especificada (siempre que desee localizar adecuadamente su aplicación). Como resultado, un programa complejo tiende a requerir que esto se especifique en todas partes, ya que dejar el "valor predeterminado" es peligroso en el mejor de los casos, y tiende a introducir errores a lo largo del tiempo.
Sin embargo, especificar esto, como ha notado, tiende a aumentar el tamaño de su código, y potencialmente reducir la legibilidad. Esto conduce a la compensación: legibilidad y mantenibilidad a través de un código más corto contra una internacionalización y localización adecuadas y mantenibilidad a través de ser más explícito en todas partes.
En mi opinión, no hay una respuesta "correcta" aquí, realmente depende de su aplicación. Si su aplicación es completamente sobre presentación, y no hace mucha manipulación de datos, especialmente no con ningún tipo de almacenamiento de archivos autoadministrado, la configuración de la cultura actual (y cultura de ui) una vez puede estar bien. He descubierto que las aplicaciones más complicadas tienden a no funcionar tan bien de esta manera, sin embargo, en cuyo caso las sugerencias de FxCop de especificar esto en todas partes parecen más atractivas.
@Reed Copsey: También he encontrado que agregarlo a todas partes como reflejo de FxCop crea errores: varias veces he visto casos en los que se ha especificado una opción de cultivo incorrecta. Esto es obviamente solo un problema de educación, pero es algo común cuando algo como FxCop te dice que hagas cosas pero no necesariamente entiendes por qué. –
@Scott: cierto. Pero este es el caso con todo en la programación: si vas a usarlo, necesitas entenderlo o te morderá. La única manera sensata de hacer la localización es considerarla cuando escribe el código por primera vez: localizar un producto completo es uno de los peores trabajos y un orden de magnitud más costoso que pensarlo desde el principio. –
No estoy de acuerdo. ¿Colocaría la cultura en todos los ToString() de mis clases? Creo que la lógica y los objetos deberían ignorar la cultura. – onof