powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Используете вы Optional ?
25 сообщений из 164, страница 4 из 7
Используете вы Optional ?
    #39678737
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronНо оставим C#, Optional проблема явы.нет логики.
Чтобы в java не было проблем, надо знать как у других).
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678741
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronДиезпропущено...


А если говорить глобально про новые возможности ЯП - то наличие альтернативы всегда лучше ее отсутствия. А не нравится - не используйте :)
Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:)

Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell.
"Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага?
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678745
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диезmikronпропущено...

Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:)

Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell.
"Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага?
Отсутствие значения в аргументах функции хаскель васпринимает нормально. Он в качестве резалта генерирует новую функцию.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678751
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДиезпропущено...


Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell.
"Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага?
Отсутствие значения в аргументах функции хаскель васпринимает нормально. Он в качестве резалта генерирует новую функцию.

Это вы про частичное применение? Ну, тут нет неинициализированных значений, которые можно "потом" заполнить, как в случае переменных в ООП.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678753
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему только я и микрон сделали попытку расширить тему топика.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678763
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАндрей Панфилов, а меня еще интересует такой вопрос. Есть два DAO.
Один - декларирует безопасный способ возврата значения. Второй - классический.
Кто ответственен за отсутствие NPE в первом случае. В большей степени - автор
реализации SafeDao, или программист который это Dao использует.Причем тут вообще ответственность? Если метод возвращает Optional, то это заставляет консьюмера заморочиться чтобы получить реальное значение, т.е. писать isPresent/get/orElse/orElseGet - сама по себе лапша с проверками на null никуда не делась - просто перешла из императивной в функциональную (это и есть предмет открытого спора: почему Optional в жаве такой кривой). Единственный профит здесь - это map/flatMap, они вроде как количество кода уменьшают, хотя с эстетической точки зрения код лучше не становится.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678766
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез1. Null нельзя использовать в цепочке вычислений, получим NPE в случае отсутствия значения.
В случае Optional, EMPTY - обычный объект, поэтому можно писать конструкции вида
Код: java
1.
Optional.ofNullable(str).map(x -> x.length()).orElse(0);



Сравним:
Код: java
1.
 str == null ? 0 : str.length


Или тот же Црешётка Тут нет никакого подвоxа или скрытыx типов, один gолый null
Код: c#
1.
str?.Length??0
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678773
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диезmikronпропущено...

Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:)

Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell.
"Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага?
Я не знаю этих языков, поэтому не понимаю вашу рагументацию.
Я хотел показать от противного - наличие алтернативы не всегда лутше.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678778
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диез
Код: java
1.
Optional.ofNullable(str).map(x -> x.length()).orElse(0);

Давайте немного поправим, а то совсем убого выглядит
Код: java
1.
Optional.ofNullable(str).map(String::length).orElse(0);
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678783
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ПанфиловДиез
Код: java
1.
Optional.ofNullable(str).map(x -> x.length()).orElse(0);

Давайте немного поправим, а то совсем убого выглядит
Код: java
1.
Optional.ofNullable(str).map(String::length).orElse(0);



Хотел, чтобы было нагляднее для mikron. В C# же нет method references, как в Java
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678787
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronДиезпропущено...


Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell.
"Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага?
Я не знаю этих языков, поэтому не понимаю вашу рагументацию.
Я хотел показать от противного - наличие алтернативы не всегда лутше.

Вы пришли в раздел Java, подняли топик трехлетней давности, и начали в довольно агрессивном тоне критиковать разработчиков Java, при этом не вполне понимая, что ими двигало.
Ну какой тут конструктив может быть ? )) . Так, флейм на тему...

Сорри, сольюсь пожалуй, работать надо )
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678791
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДиезВ C# же нет method references, как в Java
Есть, называются delegate.

ДиезNull нельзя использовать в цепочке вычислений, получим NPE в случае отсутствия значения.
ваше утверждение таким образом опровергнуто: Мои примеры показывают как легко null может итегрироватся в цепочку вычислений. И главное - даже пример на яве лаконичней и еффективней.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678796
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДиезВы пришли в раздел Java, подняли топик трехлетней давности, и начали в довольно агрессивном тоне критиковать разработчиков Java, при этом не вполне понимая, что ими двигало.
Я пришёл спросить как себя чувствуйт другие.
А здесь есть разработчики явы? Если есть те кто придумал "Оптинал"? им откыто, прямым текстом - кретины!
Ко всем осталным отношения не имеет. Так что вы не обрашяйте внимания, это не к вам. Я не хотел вас обидет.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678799
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronДиезВ C# же нет method references, как в Java
Есть, называются delegate.


(facepalm)
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678804
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЯ пришёл спросить как себя чувствуйт другие.
А здесь есть разработчики явы? Если есть те кто придумал "Оптинал"? им откыто, прямым текстом - кретины!
Ко всем осталным отношения не имеет. Так что вы не обрашяйте внимания, это не к вам. Я не хотел вас обидет.
Детский сад, вторая четверть. Ваша истерика нам очень важна. Пишите ещё.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678811
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагаю не мешать функциональный ЯП и не функциональный.
Нахрена приводить языки где null нет или логика с null не используется?
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678902
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю что невозможно (не удастся) обсуждать сферический Optional в вакууме. Мы так или иначе в поисках альтернатив будем делать сравнения с другими яп, парадигмами и подходами. И это хорошо. А самое плохое - ругать не разобравшись.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678940
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123забыл ник,
Scala не знаю. Не понял, как мне без null жить?

Многие до сих пор без goto не могут. Подумай, зачем тебе вообще нужен null? Ты просто привык смотреть на программирование с точки зрения императивного языка. Мир меняется, функциональщина и декларативный подход лезет во все щели, пора самообразовываться, бро. Если так подумать, то null используется в двух местах - 1) когда не знаешь что вернуть из метода и идешь по пути наименьшего сопротивления, вместо создания NullObject или NullCollection ты просто возвращаешь нулл и живитесь как хотите:) 2) Когда некоторые переменные в классе неинициализированы. Тут можно долго холиварить о том, а нужен ли вообще изменяемый стейт(чем его меньше тем лучше тут думаю согласны все), и решается это созданием полностью инициализированного объекта с выполнением всех инвариантов, например через factory methods как писал mayton.
Оба эти случая лишь ведут к тому что программист плодит вероятные проблемы там, где их не было бы, не будь null.
Petro123Если метод дайМнеВозраст() а база недоступна?

Option конечно, но не кривой как в java.
Petro123Или райзе форсмажор в середине подготовки ответа?

Exceptions, null - это все side-effects, которых надо избегать, чтобы иметь мало-мальскую возможность "reason about code", к сожалению формат форума не подразумевает чтение лекции, в которой можно было бы обьяснить что это и главное, зачем это.

Отличие scala - в том что Option там это монада. Грубо говоря это абстракция, или контекст в котором происходит цепочка вычислений, результат следующего зависит от предыдущего. В каждой монаде запрограммировано как обрабатывать нестандартные результаты(отсутствие результата или неправильное значение и тд) и контекст сам решает как быть дальше, программисту просто надо писать бизнес-логику. В случае Option - если какая-то из функций цепочки вернет None(индикатор отсутствия результата) то вычислять цепочку далее бессмысленно, и результатом всего выражения будет None.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   def employeeById(id:Int): Option[Employee] // принимаем Int возвращаем либо Some(employee) либо None
   def departmentByEmployee(emp:Employee): Option[Department] // принимаем Employee возвращаем либо Some(department) либо None
   def departmentEmail(dep:Department): Option[Email] // принимаем Department возвращаем либо Some(email) либо None


   def fetchEmail(id:Int) = {
       for {
            e <- employeeById(id)
            d <- departmentByEmployee(e)
            em <- departmentEmail(d)
       } yield em
}



Обрати внимание, все функции принимают конкретные объекты, а не Option. Задача распаковать\запаковать Option лежит на методах map и flatMap монады(в данном случае Option), твоя задача писать бизнес-логику а не париться о null и т.д. Но так как синтаксиса for{ <- }
в Java нету, то и Optional намного менее мощная и нужная штука.

Относится не только к Scala, а к любому декларативному языку, на самом деле я тоже долго не понимал почему Java так не любят, пока не потрудился и не разобрался с Haskell и попутно Scala. И хотя я до сих пор вижу некоторые преимущества в Java(не языке, а платформе и сообществе), но знание двух парадигм конкретно помогает посмотреть на код с разных сторон, так что рекомендую.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39678947
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Я предлагаю не мешать функциональный ЯП и не функциональный.
Нахрена приводить языки где null нет или логика с null не используется?

Так нахрена совать ФП концепт(Optional, Stream..) в сугубо императивный язык программирования?

Это был риторический вопрос, реалии таковы, что ФП идеи просачиваются в ООП языки, а не наоборот, ну и если делаете новые фичи, ну так делайте нормально. Есть подозрение что pattern-matching тоже кривой будет
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679020
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никМир меняется, функциональщина и декларативный подход лезетне верю что залезет)).
Про ООБД совсем недавно тоже пророчили.
Но РСУБД как была так и осталась.
Я за императивный код.
Но мысли твои интересные.
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679119
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
господа, идея Option проста как валенок...

если программа открывает порт, или файл, или парсит строку в цифру может случится исключение. сигнатура метода заставляет Вас быть готовым обработать это исключение либо переебросить его для обработки выше.
Вы не можете избежать этого.

в добавление к этому Option, также как и как исключения, будет заставлять програмиста быть готовым к обработке None.

That's it!
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679133
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinгоспода, идея Option проста как валенок...

если программа открывает порт, или файл, или парсит строку в цифру может случится исключение. сигнатура метода заставляет Вас быть готовым обработать это исключение либо переебросить его для обработки выше.
Вы не можете избежать этого.

в добавление к этому Option, также как и как исключения, будет заставлять програмиста быть готовым к обработке None.

That's it!

А обьяснишь чем это отличается от checked exceptions?:) Не все так просто
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679141
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CheblinNone
А что такое None и зачем быть готовым к его обработке?

например в ф-ции:

Код: java
1.
2.
3.
Integer Add( Integer a, Integer b ) {
   return new Integer( a.intValue() + b.intValue() );
}



Чем None лучше/хуже, чем выход за Integer.MAX_VALUE, Integer.MIN_VALUE ?
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679146
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если говорить об эффективности, то это "синтаксический сахар" который фактически приводит еще к одному уровню boxing/unboxing.
В общем, вещь явно совершенно не бесплатная

IMHO
...
Рейтинг: 0 / 0
Используете вы Optional ?
    #39679175
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что такое None и зачем быть готовым к его обработке?
сори в Rust е по-уши, машинально написал. надеюсь все поняли о чем я.

Leonid KudryavtsevА если говорить об эффективности, то .... вещь явно совершенно не бесплатная
хочется поговорить о эффективности Exceptions? не надо себя сдерживать.
...
Рейтинг: 0 / 0
25 сообщений из 164, страница 4 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Используете вы Optional ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]