История изменений
Исправление 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, плюшку.