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

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

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

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

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


person Martijn    schedule 25.10.2011    source источник
comment
Д'о. Извините, отправил ответ, не заметив пользовательскую часть. В очереди на удаление... :p   -  person Tieson T.    schedule 25.10.2011


Ответы (5)


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

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

person Davide Piras    schedule 25.10.2011
comment
Ваша последняя фраза слишком общая. Статические классы прекрасно подходят, если они содержат только системно-независимое неизменное состояние или вообще не содержат состояния. Здесь, конечно, состояние зависит от системы и изменчиво, поэтому избегать их здесь — правильный выбор. - person CodesInChaos; 25.10.2011

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

person Jakub Konecki    schedule 25.10.2011

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

person Ankur    schedule 25.10.2011

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

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

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

person Community    schedule 25.10.2011

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

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

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

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

person Yahia    schedule 25.10.2011