Где вы должны хранить свои постоянные строки в .NET - PullRequest
17 голосов
/ 29 ноября 2010

Где хранить наиболее часто используемые строки для сообщений об ошибках, уведомлений и т. Д.?

Раньше я помещал его в этот глобальный класс, в котором было несколько const строк, но я также видел некоторые, где он хранится в файлах ресурсов. Где лучшее место для их размещения? Я использую .NET, кстати.

Ответы [ 5 ]

15 голосов
/ 29 ноября 2010

Resx удобен, если вы ожидаете необходимости поменять их - например, интернационализация или индивидуальная настройка.Но это не очень трудно перемещать их вручную между ними.Итак: может ли это потребоваться изменить?

Я скажет : если вы делаете держите их в коде, постарайтесь, чтобы константы были как можно более ограничены;если константа относится только к User экземплярам, ​​например, поместите ее в User.

Аналогично, вещи, которые не изменит , не должны загромождать рекс;например, какая-то внутренняя общеизвестная строка, которая относится к значению значения в базе данных ... вероятно, не принадлежит resx, даже если вы используете resx.

7 голосов
/ 29 ноября 2010

Полагаю, если вы когда-нибудь захотите перевести / локализовать свой продукт, файлы ресурсов будут лучшим местом для их хранения.

Я уверен, что есть и другие преимущества / недостатки обоих, но это то, что прыгает мне в голову первым.

3 голосов
/ 29 ноября 2010

Все, что может быть локализовано, должно быть в файле ресурсов. Даже если вы на 100% уверены, что вам никогда не понадобится локализация, поскольку строки в файле ресурсов облегчают этот переход.

Таким образом, заголовки, имена, метки графического интерфейса, текст диалога, сообщения об ошибках и т. Д. Принадлежат в формате resx. Сделайте это сейчас. Если / когда ваше приложение нуждается в локализации, будущие разработчики будут вам благодарны.

Теперь другие константы немного сложнее. Я не думаю, что есть жесткое и быстрое правило, но в целом я пытаюсь определить «истинные» константы как константы с настолько малой областью действия, насколько это необходимо. Под истинной константой я подразумеваю что-либо, что вряд ли когда-либо изменится за время существования приложения. Я не люблю использовать файл ресурсов для не локализованных строк, так как он имеет тенденцию нарушать инкапсуляцию. Например, требуемый размер для функции PKDB2 должен быть определен локально. Никто вне криптообъекта не должен знать, что это такое.

Вещи поднимают связанную тему. Все, что в настоящее время является статичным, но может измениться в будущем (даже в будущих версиях приложения), должно быть объявлено только для чтения. Они могут быть загружены с Resx, лично я не. Effectivve C # охватывает это в пункте № 2.

Кроме того, многое зависит от того, чего требует ваша компания / команда. Я был в командах, где ничего не было в файле ресурсов, а также в командах, где все (даже то, что я считал нужным определить локально) хранилось в файле ресурсов. *

3 голосов
/ 29 ноября 2010

Если они являются частью ваших элементов пользовательского интерфейса, таких как заголовок и т. Д., Поместите их в файлы ресурсов.

Если они являются частью вашей программной конструкции, такой как префиксы файлов, строки сообщений об ошибках и т. Д., Вы должны поместить их в отдельный файл кода.

1 голос
/ 29 ноября 2010

См. в этом посте . Вы можете найти там несколько полезных ответов, а также ценные обсуждения в комментариях.

Как правило, вы должны:

  • подумать дваждыперед созданием открытого класса с константами.
  • место, отображаемое для пользовательских сообщений в файлах ресурсов (вы никогда не знаете, когда проекту потребуется локализация)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...