#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
, поскольку они зависят от системы и изменчивы.
Некоторые ссылки: