Существует врожденная компромисс в игре здесь.
Как минимум, вы хотите указать CultureInfo для использования InvariantCulture всякий раз, когда вы делаете что-либо внутри своей программы. Например, использование этого параметра с помощью Serialization заставляет представление данных всегда быть одинаковым, поэтому вам не нужно беспокоиться о проблемах интернационализации с вашими внутренними форматами данных.
Это говорит о том, что определение этого везде имеет некоторые преимущества - в основном, заставляя вас следить за тем, чтобы вы правильно справлялись с этим. Внутренняя работа программы и работа с пользовательским интерфейсом должны иметь определенную культуру (если вы хотите правильно локализовать свое приложение). В результате сложная программа имеет тенденцию требовать, чтобы это было указано повсюду, поскольку оставлять «дефолт» в лучшем случае опасно и, как правило, вводить ошибки со временем.
Однако, указав это, как вы заметили, имеет тенденцию увеличивать размер вашего кода и потенциально уменьшать читаемость. Это приводит к компромиссу и удобству обслуживания посредством более короткого кода, а не к правильной интернационализации, локализации и ремонтопригодности, поскольку они более ясны во всем мире.
На мой взгляд, здесь нет «правильного» ответа - это действительно зависит от вашего приложения. Если ваше приложение полностью связано с презентацией и не делает много манипуляций с данными, особенно не с любым типом самоконтролируемого хранилища файлов, установка текущей культуры (и культуры ui) однажды может быть прекрасной. Я обнаружил, что более сложные приложения, как правило, не работают так же, но в этом случае предложения FxCop о том, чтобы указать это везде, выглядят более привлекательными.
@Reed Copsey: Я также обнаружил, что добавление его везде как рефлекс FxCop создает ошибки - несколько раз я видел экземпляры, в которых была указана неправильная опция культуры. Это, очевидно, просто проблема образования, но это обычное явление, когда что-то вроде FxCop говорит вам делать что-то, но вы не всегда понимаете, почему. –
@Scott: Верно. Но так обстоит дело со всем в программировании - если вы собираетесь его использовать, вам нужно это понять или это вас укусит. Единственный разумный способ сделать локализацию - это рассмотреть ее, когда вы впервые напишите код - локализация завершенного продукта - одна из худших задач, которые нужно сделать, и на порядок дороже, чем думать об этом с самого начала. –
Я не согласен. Я бы поместил культуру во все классы ToString() моих классов? Я думаю, что логика и объекты должны не знать о культуре. – onof