Название: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 10:40 Доброго времени суток!
Я решил задаться вопросом, как правильно работать с QSettings. Имеются две функции saveSettings и loadSettings. В каждой я вручную прописываю, наименование параметра, который необходимо получить или сохранить. То есть, происходит некоторое дублирование имён параметров. Причём иногда могу опечататься и программа будет сохранять под одним именем, а запрашивать параметр под другим. Сейчас есть идея создать какое-нибудь перечисление (enum {val1, val2}) и словарь над выше указанными функциями. А в самих функциях уже подставлять именно словарь(перечисление). Таким образом и добавлять новые параметры, и редактировать старые будет эффективнее. Хотел узнать мнения других участников. Как Вы работаете с настройками? Название: Re: Методы сохранения настроек Отправлено: Swa от Июль 18, 2014, 10:49 Зачем? Там же всё автоматически делается.
Вот как я работаю https://github.com/WalterSullivan/qNotesManager/blob/master/src/applicationsettings.cpp (https://github.com/WalterSullivan/qNotesManager/blob/master/src/applicationsettings.cpp) Название: Re: Методы сохранения настроек Отправлено: Bepec от Июль 18, 2014, 10:51 У меня лично работает система "не бей лежачего". Программулина небольшая парсит файл, выбирает из него переменные и я потом выбираю которые сериализовать :) После выбора она тупо переписывает ф-ции save/loadSettings. Конечно она не совершенна, но мне хватает :)
PS словарик хорошо, но что то мне в нём не нравится :D Название: Re: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 11:02 Зачем? Там же всё автоматически делается. Вот как я работаю https://github.com/WalterSullivan/qNotesManager/blob/master/src/applicationsettings.cpp (https://github.com/WalterSullivan/qNotesManager/blob/master/src/applicationsettings.cpp) Я не понял, что именно делается автоматически. Мне почему-то очень не нравится это дублирование. Видимо из-за какого-нибудь возможного (см. код) Код: QPoint ApplicationSettings::GetWindowPos() const { Название: Re: Методы сохранения настроек Отправлено: Swa от Июль 18, 2014, 11:05 Я не понял, что именно делается автоматически. Мне почему-то очень не нравится это дублирование. Видимо из-за какого-нибудь возможного (см. код) Ну от такого не застрахован никто, тут ктрл+с, ктрл+в вам в помощь. Название: Re: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 11:12 У меня лично работает система "не бей лежачего". Программулина небольшая парсит файл, выбирает из него переменные и я потом выбираю которые сериализовать :) После выбора она тупо переписывает ф-ции save/loadSettings. Конечно она не совершенна, но мне хватает :) PS словарик хорошо, но что то мне в нём не нравится :D В смысле, имеется некоторый файл с настройками, который превращается в код чтения/записи настроек? В моём случае это не очень удобно будет, наверное. Ну от такого не застрахован никто, тут ктрл+с, ктрл+в вам в помощь. Да, именно так я и делаю. Но, когда у меня был проект с большим количеством настроек, меня это почему-то раздражало :-\ . Видимо, потому что лень было крутить колёсико мыши туда-сюда. А с перечислением, особенно если его загнать в какой-нибудь namespace, мне кажется, что будет кодирование немного проще. Всплывающие подсказки сделают всё сами за тебя. И не нужно будет выводить код в два окна, прокручивать его часами. Но, быть может, я и ошибаюсь :DНазвание: Re: Методы сохранения настроек Отправлено: Bepec от Июль 18, 2014, 11:17 Собственно нет никаких доп файлов. Там в комментариях напротив переменных устанавливается знак на выбор :)
Аля Код: bool isComplete; //+ Но собственно в любом из иных способов придётся прописывать 2 функции руками. И Enum'ы и словарики чуть облегчат проблему, но не более того. Ручки всё равно устанут и вы сможете ошибиться в ключе словарика, или написать его два раза :D В общем никаких особых преимуществ :D Название: Re: Методы сохранения настроек Отправлено: Old от Июль 18, 2014, 11:23 Ручки всё равно устанут и вы сможете ошибиться в ключе словарика, или написать его два раза :D В общем никаких особых преимуществ :D Что бы не ошибиться можно задать ключики через константы:Код и использовать их. Тогда и ide будет помогать, а если все таки в написании ошибетесь, то и компилятор по рукам даст. Название: Re: Методы сохранения настроек Отправлено: Bepec от Июль 18, 2014, 11:52 Но тогда и добавление нового параметра превращается в головную боль - сделать константу, запилить её в 2 функции/или же добавить в словарь с ссылкой на переменную.
Название: Re: Методы сохранения настроек Отправлено: kambala от Июль 18, 2014, 12:24 ключи словаря тоже надо делать константами по-хорошему
Название: Re: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 12:43 Что бы не ошибиться можно задать ключики через константы: Тоже интересный вариант, мне кажетсяКод и использовать их. Тогда и ide будет помогать, а если все таки в написании ошибетесь, то и компилятор по рукам даст. Название: Re: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 12:45 Но тогда и добавление нового параметра превращается в головную боль - сделать константу, запилить её в 2 функции/или же добавить в словарь с ссылкой на переменную. Я придумал словарь использовать ещё и потому, что можно прикрутить ещё один словарь, который будет указывать, как обрабатывать переменную, чтобы в функциях save/load обрабатывать параметры тупо в цикле :PНазвание: Re: Методы сохранения настроек Отправлено: Alex Custov от Июль 18, 2014, 21:38 у меня имена параметров зашиты в дефайнах
Название: Re: Методы сохранения настроек Отправлено: __Heaven__ от Июль 18, 2014, 22:57 у меня имена параметров зашиты в дефайнах Тоже достойный вариант. Мне нравится больше, чем копипаст |