Общие: всегда сохранять настройки при закрытии по сравнению с сохранением только при изменении - PullRequest
1 голос
/ 25 января 2012

Я в некотором роде бета-тестирование небольшого приложения на Python - когда приложение закрывается, настройки сохраняются, даже когда я не вносил изменений.Мне было интересно, если это общая практика - звучит так, как настройки должны быть сохранены только после внесения изменений, но есть ли причины (кроме уменьшенной сложности) про сохранение настроек всегда при закрытии?

Ответы [ 2 ]

1 голос
/ 25 января 2012

Я не думаю, что это даже связано с питоном. В общем, у вас будет что-то вроде этого:

  1. Загрузка настроек из файла
  2. Используйте и, возможно, изменяйте настройки в памяти.
  3. Запись настроек в файл.

Обнаружение изменения настроек может привести к изменению 2 (сохранить «измененное» состояние) или 3 (разница с текущими постоянными настройками).

Первое решение имеет небольшие накладные расходы (может быть одно логическое значение), но тем не менее накладные расходы и находится в «активном» состоянии вашей программы (не запуск / выключение). Кроме того, это дополнительная логика, которая может пойти не так (например, случайно сбросив логическое значение в false на копии).

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

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

Так что я бы не стал этого делать, если хранение файла не является слишком сложным / медленным или если вы действительно не хотите, чтобы такие вещи, как «время изменения» файла, были изменены, если вы действительно не изменили настройки. Но эти обстоятельства кажутся мне довольно исключительными.

1 голос
/ 25 января 2012

Если ваше приложение использует, например, configparse , файл будет перезаписан, если в процедуре закрытия будет что-то вроде:

with open('example.ini', 'w') as configfile:
  config.write(configfile)

Он не будет отличаться от предыдущего, если выничего не изменилось.

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