0

Модель ответа API, например:

      Class {
        String mySpeedVolMolHol;
        Stribg myLocationLatitudeLongitude;
        // И т.д.
       }

Или например:

      Class {
        String s;
        Stribg p;
        // И т.д. с публичными, человеко понятными 
          сеттерами  
      }

В случае со второй моделью у нас меньше данных передаются по сети. Нужна ли такая "оптимизация"? И насколько она будет продуктивной?

Будем стучатся к api. Каждые 3 секунды после выполнения предыдущего запроса. Возможно будет соккет...

DuosDuo
  • 1,640
  • В каком виде передаются данные? JSON? Можно задать атрибуты для сериализатора. Аналогично для xml. А можно передавать данные в формате, где нет имен полей/свойств (csv или разные бинарные). – Alexander Petrov Aug 27 '19 at 03:36
  • Формат Будет Json – DuosDuo Aug 27 '19 at 04:39
  • Интересно, есть ли возможность в GSON возможность десериализации без имен полей? т.е. придет массив Object`ов и мы знаем что элемент 1 это int, элемент 2 это String и т.д. и пишем какой то десериализатор для retrofit.. – DuosDuo Aug 27 '19 at 06:43

2 Answers2

0

Я бы не стал выполнять такого рода "оптимизации" без явной необходимости. Это впоследствии может помешать разработке, так как имена полей неинформативные.

Sheridan
  • 3,106
  • планировали только имена полей таким образом писать(именно модель API, а в клиентах все по феншую), а в конструкторе и в сеттерах геттерах было бы написано нормально. И в последующем бы было более менее нормально.. Ну и документация для новичков) – DuosDuo Aug 27 '19 at 06:41
0

Просто навесьте атрибуты на свойства класса:

public class Class
{
    [JsonProperty("s")]
    public String mySpeedVolMolHol { get; set; }
    [JsonProperty("p")]
    public String myLocationLatitudeLongitude { get; set; }
}

В результате будет получаться следующий json:

{"s":"...","p":"..."}

Нужна или нет эта оптимизация, зависит от ширины каналов вашей сети и сети ваших клиентов.

Не важно, что ваши пакеты весит 5-20 Кб. Важно общее количество передаваемых данных: может этих пакетов миллионы в секунду передаётся.

Так вот, если канал не загружен (и есть гарантированный запас на будущее) - можно не оптимизировать. Если канал загружен - вывод очевиден: в оптимизации есть смысл.

Причём у вас-то канал может быть толстый, а у ваших клиентов (которые деньги вам платят) он может быть тонким (или занят общением с другими поставщиками данных). И вашим клиентам может быть важна такая оптимизация.

Мониторьте загрузку сети, тестируйте. И тесно общайтесь с клиентами/заказчиками, интересуйтесь их делами.

  • Спасибо. Да, это вариант что бы API сериализовало с наименьшим кол-вом символов в именах полей. Главный вопрос наверное такой: Есть ли смысл от этик 20 кбайт(меньше даже, 5 наверное ) экономии в наше время?) – DuosDuo Aug 27 '19 at 10:45