Статические классы ... нормально ли это делать? - PullRequest
1 голос
/ 30 мая 2009

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

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

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

Это глупо?

Ответы [ 3 ]

3 голосов
/ 30 мая 2009

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

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

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

1 голос
/ 30 мая 2009

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

0 голосов
/ 30 мая 2009

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

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