Куда поместить реализацию сохранения пользовательских настроек?

#c# #winforms #implementation

#c# #winforms #реализация

Вопрос:

У меня есть сетка, и когда пользователь закрывает форму, я хочу сохранить некоторые настройки для пользователя, который вошел в систему. У меня уже есть 2 метода реализации, но мне интересно, где реализовать эту функциональность:

  • Должен ли я создать статический служебный класс с двумя методами
  • Должен ли я создать новый класс и назвать его чем-то вроде UserSettingsManager?

На данный момент у меня есть два метода, но я могу представить, что в будущем мне понадобятся дополнительные методы. Что мне делать?

Редактировать: я уже вижу несколько ответов (спасибо за это), но можете ли вы также сказать, почему вы выбрали бы этот вариант?

Комментарии:

1. Ох. Извините, опубликовал ответ, не заметив «пользовательскую» часть. Поставлен в очередь на удаление … : p

Ответ №1:

Я бы выбрал UserSettingsManager , звучит разумно.

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

Комментарии:

1. Ваше последнее предложение слишком общее. Статические классы отлично подходят, если они содержат только независимое от системы неизменяемое состояние или вообще не содержат состояния. Здесь, конечно, состояние зависит от системы и изменчиво, поэтому избегать их здесь — правильный выбор.

Ответ №2:

Я бы выбрал второй метод, поскольку статические классы трудно имитировать.

Ответ №3:

Поскольку состояние, необходимое для этой функциональности, уже доступно в текущем основном объекте Windows, статический класс со статическими функциями подойдет.

Ответ №4:

Просто сделайте самое простое, что вы можете придумать. Если статический служебный класс использует наименьшее количество кода, действуйте.

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

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

Ответ №5:

Windows предлагает папки с правильно настроенными разрешениями для хранения пользовательской информации.

Используйте Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) или Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) , чтобы получить соответствующий путь.

Инкапсулируйте это в класс, подобный UserSettingsManager … в этом случае избегайте static , поскольку они зависят от системы и изменчивы.

Некоторые ссылки: