Статический classes...is это нормально делать?

StackOverflow https://stackoverflow.com/questions/928055

  •  06-09-2019
  •  | 
  •  

Вопрос

Я читал, когда использовать статические классы в C #, но главный ответ не обязательно отвечал на мой вопрос.У меня есть приложение, которое взаимодействует с довольно большим количеством аналогичного оборудования через HTTP-сервер.Каждое устройство должно быть авторизовано, и учетные данные, как правило, одни и те же.Я использую Свойства.Настройки.Default.etc для обработки общих настроек приложения;однако для удобства я отслеживаю последнее использованное имя пользователя / пароль при индивидуальном входе в систему устройства.Значения по умолчанию, которые можно установить через окно параметров, используются первыми и остаются неизменными, если их не изменить через окно параметров, несмотря на изменение временных настроек и их использование вместо значений по умолчанию.

Во всяком случае, таков сценарий ... Что касается вопроса, я делаю это:

private static class TemporarySettings
{
    public static string Username = Properties.Settings.Default["Username"].ToString();
    public static string Password = Properties.Settings.Default["Password"].ToString();
}

Разве это глупо?

Это было полезно?

Решение

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

  1. Если вы хотите изменить имя пользователя и пароль без перезапуска приложения, у вас не будет такой возможности.Вы можете написать логику, чтобы отслеживать изменения в файле конфигурации и перезагружать значения, если они изменяются.
  2. Если вы хотите "повторно использовать" свой код (особенно если вы добавляете больше функций, таких как мониторинг изменений) для нескольких наборов имени пользователя и пароля, вам нужно преобразовать это в экземпляр.
  3. Если вы когда-нибудь захотите провести модульное тестирование классов, зависящих от этого класса, вам будет очень сложно заглушить значения.

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

Другие советы

А еще лучше, отметьте их readonly или используйте свойства, у которых есть только геттеры.

Вы устанавливаете имя пользователя и пароль в одно и то же значение, но в остальном - нет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top