aNNiMON off
let live
Теперь представим ситуацию, что меняется тип данных какого-то параметра.
В 4 варианте, придётся поменять лишь getter и setter:
Было int getCode(), setCode(int v)
Стало String getCode(), setCode(String v)

В варианте Ксакепа при сохранении всё заменится автоматически, если будет использоваться полиморфизм:
Было save(KEY, code) -> save(String key, int value)
Стало save(KEY, code) -> save(String key, String value)
Всё прекрасно, все довольны.
Но с получением - беда.
aNNiMON off
let live
А значит:
1 вариант. В Start, Saver и Other нужны константы с ключами. Запись будет выглядеть так: Prefs.save(KEY, "value");
Плохо - нужно тягать константы
2 вариант. Не использовать константы, а писать ключ сразу. save("key", "value").
Плохо - можно ошибиться в написании, сложно рефакторить
3 вариант. Создать класс и хранить в нём ключи. Класс PrefKeys. Запись: save(PrefKeys.KEY, "value")
Хорошо. Но требует лишнего класса
4 вариант - закинуть всё Prefs
Хорошо - не нужны ключи в др клсх
aNNiMON off
let live
Чтобы всем всё было понятно, вот пример.
Допустим, есть классы:
  - Start - читаем логин и пароль
  - Saver - записываем логин и пароль
  - Other - читаем логин, записываем пароль.
Ну и сам Prefs.

Если Prefs не знает ничего о хранимых значениях, как того требует Ксакеп. То нам нужно передавать ключ и значение, чтобы сохранить, и ключ, чтобы загрузить значение.
vlavolk off
знает толк
я согласен, это как вариант.
aNNiMON off
let live
vl@volk, и тогда получается, что для сохранения параметра нужно передавать key и значение, а значит нужно тягать за собой константы или помнить имена всех ключей.
vlavolk off
знает толк
aNNiMON,
  1. public String getValueByKey(String key);
  2.  
  3. public int getScore() {
  4.     int score;
  5.     try {
  6.         score = Integer.parseInt(getValueByKey("score"));
  7.     } catch (Exception) {
  8.         score = 0;
  9.     }
  10.     return score;
  11. }
aNNiMON off
let live
Ксакеп, ну ты сделай как хочешь, покажи мне в чём преимущество.

Между тем добавил этот класс в шаблоны. https://github.com/aNNiMON/and...ster/other/PrefClass
Кто хочет, можете контрибутить.
Ксакеп off
aNNiMON, кароч, ладно.
aNNiMON off
let live
vl@volk, а получать как будешь?
prefs.getScore() - откуда ключ брать?

Ксакеп, SharedPreferences | Android Developers
Ксакеп off
aNNiMON, в любом случае задача класса состоит в том, чтобы перекинуть некоторый объект (настройки) куда-то там далеко в неведомую вселенную (на карту памяти). И он не должен знать о том, что это поля username/score, или ещё какие. Слишком сильная связь получается.

Я пока что вижу так: должен быть некоторый объект, собственно, черный ящик. И вот его пусть и записывает (или сериализует) этот класс.
Всего: 34
<< 1 2 3 4 >>

Реклама

Мы в соцсетях

tw tg yt gt