Поля класса в сравнении с предпочтениями - PullRequest
0 голосов
/ 22 декабря 2011

С философской точки зрения, лучше ли работать с настройками по всему коду, получать и устанавливать значения по мере того, как пользователь взаимодействует с действием;или лучше работать с полями классов, а затем, возможно, в некоторых методах onDestroy () установить для окончательных значений полей класса предпочтения, а не сохранять их.

//-- Is this better?
if (a==preferences.getInt(pref1,default){
   preferenceEditor.putInt(pref2,someNumber);
}

//-- Or is this?
if (a==field1){
  field2 = someNumber;
}
...
onDestroy(){
   preferenceEditor.putInt(pref1,field1);
   preferenceEditor.putInt(pref2,field2);
}

Ответы [ 2 ]

0 голосов
/ 22 декабря 2011

Так что, пожалуйста, не "работайте с настройками".

То, что вы делаете там (в вашем первом примере), это взаимодействие с глобальной переменной.Никогда не делай этого, если можешь помочь.Это анти-паттерн.Вы не хотите глобалов в вашем коде.Это делает код сложнее для понимания / труднее для тестирования.Вместо этого, всякий раз, когда вы создаете экземпляр класса, читайте ваши глобальные настройки и добавляйте их в поля вашего класса (желательно в конструкторе).Сам класс не должен знать о вашем хранилище настроек.

Кроме того, НЕ ИСПОЛЬЗУЙТЕ onDestroy (WTF?).Вот примечание от ссылка :

Примечание: не рассчитывайте, что этот метод вызывается как место для сохранения данных!

Вместо этогопоместите эту логику в onPause ().

0 голосов
/ 22 декабря 2011

по причинам производительности поля должны быть предпочтительнее, чем настройки, но это также зависит от того, как часто значения меняются

...