Статический classes...is это нормально делать?
Вопрос
Я читал, когда использовать статические классы в 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();
}
Разве это глупо?
Решение
Это не глупо, и это может идеально решить вашу проблему (если это так, не меняйте ее).Однако есть некоторые проблемы, к которым такой подход может привести в будущем, и полезно знать, что это за проблемы.
- Если вы хотите изменить имя пользователя и пароль без перезапуска приложения, у вас не будет такой возможности.Вы можете написать логику, чтобы отслеживать изменения в файле конфигурации и перезагружать значения, если они изменяются.
- Если вы хотите "повторно использовать" свой код (особенно если вы добавляете больше функций, таких как мониторинг изменений) для нескольких наборов имени пользователя и пароля, вам нужно преобразовать это в экземпляр.
- Если вы когда-нибудь захотите провести модульное тестирование классов, зависящих от этого класса, вам будет очень сложно заглушить значения.
Однако, повторяю, вы не должны уклоняться от самого простого решения (как вы определили) из-за этих потенциальный проблемы, если только вы не считаете, что существует реальная вероятность того, что они сожгут вас в будущем.В противном случае, вероятно, переход к классу экземпляра позже, когда возникнет необходимость, не составит большого труда при рефакторинге.
Другие советы
А еще лучше, отметьте их readonly
или используйте свойства, у которых есть только геттеры.
Вы устанавливаете имя пользователя и пароль в одно и то же значение, но в остальном - нет.