LINUX.ORG.RU

История изменений

Исправление Ruth, (текущая версия) :

У Optional есть один минус.

Почему у нас возникает проблема null? Потому что мы забываем проверку на null или ошибочно предполагаем non-nullability.

Используя Option ничего не мешает написать optionVariable.get() на Option, который содержит null. Если использовать pattern matching, так, конечно, не выйдет, но потенциал для ошибки, особенно у джуниоров, остается.

С Nullable-типами, условно, у нас есть принудительный pattern matching по null-у везде.

А его обход, например, в kotlin виден сразу — для этого используется очень уродливый постфиксный оператор "!!".

Плюс нельзя заставить разработчиков везде использовать Option — будут забывать. А ведь есть ещё и библиотеки, где у авторов особое мнение.

В итоге Nullable-типы ничем не хуже Option, но имеют дополнительную, важную с учетом истории NPE, плюшку — принуждение к прекрасному на уровне синтаксиса языка.

Исправление Ruth, :

У Optional есть один минус.

Почему у нас возникает проблема null? Потому что мы забываем проверку на null или ошибочно предполагаем non-nullability.

Используя Option ничего не мешает написать optionVariable.get() на Option, который содержит null. Если использовать pattern matching, так, конечно, не выйдет, но потенциал для ошибки, особенно у джуниоров, остается.

С Nullable-типами, условно, у нас есть принудительный pattern matching по null-у везде.

А его обход, например, в kotlin виден сразу — для этого используется очень уродливый постфиксный оператор "!!".

Плюс нельзя заставить разработчиков везде использовать Option — будут забывать. А ведь есть ещё и библиотеки, где у авторов особое мнение.

В итоге Nullable-типы ничем не хуже Option, но имеют дополнительную, важную с учетом истории NPE, плюшку.

Исходная версия Ruth, :

У Optional есть один минус.

Почему у нас возникает проблема null? Потому что мы забываем проверку на null или ошибочно предполагаем non-nullability.

Используя Option ничего не мешает написать optionVariable.get() на Option, который содержит null. Если использовать pattern matching, так, конечно, не выйдет, но потенциал для ошибки, особенно у джуниоров, остается.

С Nullable-типами, условно, у нас есть принудительный pattern matching по null-у везде.

А его обход, например, в kotlin виден сразу — для этого используется очень уродливый постфиксный оператор "!!".

В итоге Nullable-типы ничем не хуже Option, но имеют дополнительную, важную с учетом истории NPE, плюшку.