Что лучший способ состоит в том, чтобы сохранить группу констант, которые использует моя программа? [закрытый]

Я записал об этом несколько недель назад и пришел к выводу, что XML является одной из наиболее широко используемых нотаций.

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

93
задан NightOwl888 11 February 2018 в 05:26
поделиться

8 ответов

Вы, вероятно, могли бы иметь их в статическом классе со статическими свойствами только для чтения.

public static class Routes
{
    public static string SignUp => "signup";
}
127
ответ дан 24 November 2019 в 06:16
поделиться

IMO, использующий класс, полный констант, подходит для констант. Если они будут время от времени меняться, я рекомендую вместо этого использовать AppSettings в вашей конфигурации и в классе ConfigurationManager.

Когда у меня есть «константы», которые фактически извлекаются из AppSettings или аналогичных, у меня всегда будет класс «констант», который обертывает чтение из диспетчера конфигурации. Всегда более целесообразно иметь Constants.SomeModule.Setting вместо того, чтобы напрямую обращаться к ConfigurationManager.AppSettings ["SomeModule / Setting"] в любом месте, где требуется использовать указанное значение параметра .

Бонусные баллы за эту настройку, поскольку SomeModule скорее всего будет вложенным классом внутри файла констант, вы можете легко использовать Dependency Injection, чтобы внедрить SomeModule непосредственно в классы, которые от него зависят. Вы также можете даже извлечь интерфейс поверх SomeModule , а затем создать зависимость от ISomeModuleConfiguration в вашем коде потребления, тогда это позволит вам отделить зависимость от файлов констант и даже потенциально может упростить тестирование, особенно если эти параметры поступают из AppSettings и вы изменяете их с помощью преобразований конфигурации, поскольку параметры зависят от среды.

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

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

26
ответ дан 24 November 2019 в 06:16
поделиться

Что мне нравится делать, так это следующее (но обязательно прочитайте до конца, чтобы использовать правильный тип констант ):

internal static class ColumnKeys
{
    internal const string Date = "Date";
    internal const string Value = "Value";
    ...
}

Прочтите это чтобы узнать, почему const может быть не тем, что вам нужно. Возможные типы констант :

  • const поля. Не используйте в разных сборках ( общедоступный или защищенный ), если значение может измениться в будущем, потому что это значение будет жестко закодировано во время компиляции в этих других сборках. Если вы измените значение, старое значение будет использоваться другими сборками до их повторной компиляции.
  • статическое только для чтения поля
  • статическое свойство без набора
18
ответ дан 24 November 2019 в 06:16
поделиться

Это лучший способ ИМО. Нет необходимости в свойствах или только для чтения:

public static class Constants
{
   public const string SomeConstant = "Some value";
}
11
ответ дан 24 November 2019 в 06:16
поделиться

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

Кроме того, для некоторых констант типа int рассмотрите обозначение:

[Flags]
enum Foo
{
}

Поскольку это позволяет обработка значений как флагов .

4
ответ дан 24 November 2019 в 06:16
поделиться

Еще одно голосование за использование web.config или app.config. Конфигурационные файлы - хорошее место для констант, таких как строки подключения и т. Д. Я предпочитаю не смотреть в исходный код, чтобы просматривать или изменять такие вещи. Статический класс, который считывает эти константы из файла .config, может быть хорошим компромиссом, поскольку он позволит вашему приложению получать доступ к этим ресурсам, как если бы они были определены в коде, но все же дает вам гибкость, позволяя им легко просматривать / редактировать космос.

3
ответ дан 24 November 2019 в 06:16
поделиться

Да, статический класс для хранения констант вполне подойдет, за исключением констант, связанных с определенными типами.

1
ответ дан 24 November 2019 в 06:16
поделиться

Если эти Константы являются ссылками на службы или переключателями, которые влияют на поведение приложения, я бы установил их как пользовательские настройки приложения. Таким образом, если их нужно изменить, вам не нужно перекомпилировать, и вы все равно можете ссылаться на них через класс статических свойств.

Properties.Settings.Default.ServiceRef
0
ответ дан 24 November 2019 в 06:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: