Как бы вы управляли своими константами для каждого класса C #? - PullRequest
4 голосов
/ 06 октября 2011

Во всех приложениях всегда есть постоянные значения, которые используются.

Мне не нравится жестко кодировать эти значения в моем приложении в каждом коде, поскольку это значительно снижает удобство обслуживания.

Iесть 2 варианта:

  1. Создать внутренний класс констант в целевом классе и добавить общедоступные значения констант, такие как

    внутренние статические класс Constants {открытая строка констант IdAttribute = "id«;}

или

  1. Создайте файл ресурсов (.resx) и сохраните там мои постоянные значения и формулы.

Iиспользовал второй подход в моем приложении здесь.Одна проблема, с которой я столкнулся при использовании файла ресурсов, заключалась в том, что я не мог использовать с ними функцию необязательного параметра .NET 4.0.

, например, приведенное ниже не работает:

public void DoSomething(string id = Resources.Constants.Id)
{
// ..
}

Ошибка былачто значение Id не определяется во время выполнения.

По существу, каким способом вы бы использовали и рекомендовали управлять своими константами для каждого класса?почему?

Мой текущий подход заключается в том, что если у меня есть константы, которые должны использоваться только внутри одного класса, я создаю статический класс Constants внутри этого класса.Если мои константы будут использоваться более чем в одном классе или проекте, я помещу их в файл ресурсов, например, PageUrls.resx.

Спасибо,

Ответы [ 2 ]

3 голосов
/ 06 октября 2011

Лично я бы предпочел, чтобы константы определялись в классах, к которым они логически принадлежат, аналогично (скажем) DateTime.MinValue.

Тогда, в общем, обнародование этих констант является чем-то вроде «запаха кода», подразумевающего некоторую связь, которая, вероятно, должна быть выражена лучше. Очевидно, нет ничего плохого в том, чтобы сделать их приватными (или внутренними), когда ваш код позволяет.

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

0 голосов
/ 06 октября 2011

Лично я использую ресурсы в основном для констант, представленных пользователю.Основным преимуществом является возможность его локализации.

Для внутренних констант я предпочитаю переменные от static readonly до const.Когда они используются многими классами, я помещаю их в класс констант , иначе в класс, где они необходимы

...