Каков будет правильный дизайн для сохранения настроек конфигурации в c ++? - PullRequest
2 голосов
/ 12 марта 2009

Скажем, у меня есть ini / json для хранения параметров конфигурации моего настольного приложения. Будет ли нормально иметь статический объект со всеми свойствами, загружаемыми при запуске / когда это когда-либо потребуется, или есть какая-либо другая лучшая альтернатива?

Так как это первый раз, когда я делаю это, поэтому просто хотел узнать, хорош ли статический объект или шаблон синглтона или что-то еще будет лучше

Ответы [ 4 ]

2 голосов
/ 12 марта 2009

В любом случае все в порядке.

Если бы это был я, он был бы у меня при создании объекта конфигурации.

cConfig Config("config.ini");

Этот класс Config будет загружать настройки, найденные в файле. Любой код может получить доступ к настройкам, выполнив

Config.Get("NumberOfFoobars")

Для целей тестирования, если в конструкции нет файла, для настроек класса установлено значение по умолчанию или создается файл журнала со строкой, уведомляющей пользователя об отсутствующих настройках.

И затем для функций, которым требуется конфигурация, я бы передавал экземпляр Config как часть параметров:

DoStuff(Config, [...]);

и DoStuff получает переменные из класса Config.

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

Возможно, вам будет интересно узнать больше об этом

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

Я обычно использую Boost.Program_options , и я обычно использую синглтон.

0 голосов
/ 12 марта 2009

Загрузка всех ваших настроек при запуске (или при первой необходимости) будет работать большую часть времени, но пользователю придется перезапустить приложение, чтобы любые изменения в файле конфигурации вступили в силу. Для большинства пользователей это никогда не будет проблемой, но для опытных пользователей, которые любят редактировать конфигурационные файлы напрямую, это может быть неприятно. В ОС UNIX возможно обрабатывать сигнал SIGHUP, который стал принятым триггером для перечитывания файлов конфигурации. Я не знаю подобного метода для Windows. Альтернативный подход заключается в отслеживании времени изменения файла конфигурации, чтобы определить, следует ли перечитать настройки.

0 голосов
/ 12 марта 2009

Если параметры конфигурации будут изменены пользователем для определения способа запуска приложения, то может быть лучше сохранить его в каком-нибудь ini-файле. Некоторые пользователи предпочитают редактировать ini-файлы напрямую, а не через графический интерфейс. Лучше дать оба варианта.
Кроме того, некоторые пользователи имеют несколько INI-файлов и вращаются среди них для настроек, которые им необходимы в данный момент.

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