Size: a a a

2020 May 28

DP

Denis Pavlyuchenko in pro.jvm
Oleksandr Olgashko
основная проблема джава опшна - https://blog.developer.atlassian.com/optional-broken/
вот интересно, не с точки зрения теории, а с точки зрения формошлепания, на сколько нам нужен в Optional - null, как значимое значение. Ведь мы получим в API, вероятно, json, который надо будет десериализовать, и там все равно придется null превращать, вероятно, в None, как некий дефакто стандарт
источник

DK

Dmitriy Krayanskiy in pro.jvm
Oleksandr Olgashko
основная проблема джава опшна - https://blog.developer.atlassian.com/optional-broken/
а способ ремонта - orElse ?
источник

VP

Vladimir Petrakovich in pro.jvm
Denis Pavlyuchenko
вот интересно, не с точки зрения теории, а с точки зрения формошлепания, на сколько нам нужен в Optional - null, как значимое значение. Ведь мы получим в API, вероятно, json, который надо будет десериализовать, и там все равно придется null превращать, вероятно, в None, как некий дефакто стандарт
Вот кстати в JSON null - это не просто None, это полноценное значение. И путать отсутствие поля и null в нём не стоит.
источник

DP

Denis Pavlyuchenko in pro.jvm
Vladimir Petrakovich
Вот кстати в JSON null - это не просто None, это полноценное значение. И путать отсутствие поля и null в нём не стоит.
наверное, зависит от клиентов.. Часто вижу, что даже "" (как и null) для строк интерпретируют, как “нет значения”. Особенно, если мы говорим про протобаф, где нет null и Optional
источник

VP

Vladimir Petrakovich in pro.jvm
Denis Pavlyuchenko
наверное, зависит от клиентов.. Часто вижу, что даже "" (как и null) для строк интерпретируют, как “нет значения”. Особенно, если мы говорим про протобаф, где нет null и Optional
Ну в некоторых контекстах это может выстрелить. Например, если делать патч, null может означать именно  "удалить поле", а не просто "ничего".
А protobuf3 - это весёлая история про то, как кто-то решил, что у любого типа есть вменяемый дефолт (что конечно же не так), и его неявное использование не будет приводить к багам на каждом шагу, если не валидировать всё внимательно.
источник

DK

Dmitriy Krayanskiy in pro.jvm
есть в протобафе нулл. Это объектные типы (например, Int64Value если хочется лонг, а не объект) + не-required поле
источник

DK

Dmitriy Krayanskiy in pro.jvm
а Optional, мне кажется, не имеет смысла при передаче данных. Только при обработке
источник

DK

Dmitriy Krayanskiy in pro.jvm
хотя, интересно, как передать нулл в массиве. Не пробовал.
источник

DP

Denis Pavlyuchenko in pro.jvm
Dmitriy Krayanskiy
есть в протобафе нулл. Это объектные типы (например, Int64Value если хочется лонг, а не объект) + не-required поле
что такое required в proto3?
источник

DK

Dmitriy Krayanskiy in pro.jvm
насколько я помню, в прото3 они все не-required.
источник

DK

Dmitriy Krayanskiy in pro.jvm
но если цель вопроса - докопаться - тогда во-первых, речь не об этом, а о null, а во-вторых, еще и второй жив. Приходилось видеть.
источник

DP

Denis Pavlyuchenko in pro.jvm
Dmitriy Krayanskiy
но если цель вопроса - докопаться - тогда во-первых, речь не об этом, а о null, а во-вторых, еще и второй жив. Приходилось видеть.
не, цели докопатся нет совсем, просто думла, может есть что-то, что позволяет сделать тип обязательным
источник

С

С in pro.jvm
Как обосновывать использование protobuf2 в новых проектах если уже есть 3й?
источник

С

С in pro.jvm
Ага, второе поле-флаг рядом %)
источник

DK

Dmitriy Krayanskiy in pro.jvm
Denis Pavlyuchenko
не, цели докопатся нет совсем, просто думла, может есть что-то, что позволяет сделать тип обязательным
там же не-required. Ну, если нет такого в 3 прото - ну и ладно
источник

DK

Dmitriy Krayanskiy in pro.jvm
С
Как обосновывать использование protobuf2 в новых проектах если уже есть 3й?
элементарно. Это может быть старый проект
источник

С

С in pro.jvm
* в новых проектах *
источник

DK

Dmitriy Krayanskiy in pro.jvm
на свете бывают не только новые проекты
источник

DK

Dmitriy Krayanskiy in pro.jvm
а в мире жвм - так подавно
источник

VP

Vladimir Petrakovich in pro.jvm
С
Как обосновывать использование protobuf2 в новых проектах если уже есть 3й?
Легко: proto3 - недоразумение
источник