|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
mikronНо оставим C#, Optional проблема явы.нет логики. Чтобы в java не было проблем, надо знать как у других). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 09:53 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
mikronДиезпропущено... А если говорить глобально про новые возможности ЯП - то наличие альтернативы всегда лучше ее отсутствия. А не нравится - не используйте :) Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:) Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell. "Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 09:58 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Диезmikronпропущено... Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:) Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell. "Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага? Отсутствие значения в аргументах функции хаскель васпринимает нормально. Он в качестве резалта генерирует новую функцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:07 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
maytonДиезпропущено... Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell. "Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага? Отсутствие значения в аргументах функции хаскель васпринимает нормально. Он в качестве резалта генерирует новую функцию. Это вы про частичное применение? Ну, тут нет неинициализированных значений, которые можно "потом" заполнить, как в случае переменных в ООП. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:19 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
По моему только я и микрон сделали попытку расширить тему топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:25 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
maytonАндрей Панфилов, а меня еще интересует такой вопрос. Есть два DAO. Один - декларирует безопасный способ возврата значения. Второй - классический. Кто ответственен за отсутствие NPE в первом случае. В большей степени - автор реализации SafeDao, или программист который это Dao использует.Причем тут вообще ответственность? Если метод возвращает Optional, то это заставляет консьюмера заморочиться чтобы получить реальное значение, т.е. писать isPresent/get/orElse/orElseGet - сама по себе лапша с проверками на null никуда не делась - просто перешла из императивной в функциональную (это и есть предмет открытого спора: почему Optional в жаве такой кривой). Единственный профит здесь - это map/flatMap, они вроде как количество кода уменьшают, хотя с эстетической точки зрения код лучше не становится. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:33 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Диез1. Null нельзя использовать в цепочке вычислений, получим NPE в случае отсутствия значения. В случае Optional, EMPTY - обычный объект, поэтому можно писать конструкции вида Код: java 1.
Сравним: Код: java 1.
Или тот же Црешётка Тут нет никакого подвоxа или скрытыx типов, один gолый null Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:36 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Диезmikronпропущено... Вы восхваляли языки где нуля нет. Я воспользуюсь вашей аргументацией: null - алтернатива, которая обогощает. Значит можно добавить во все языки, где его нет:) Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell. "Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага? Я не знаю этих языков, поэтому не понимаю вашу рагументацию. Я хотел показать от противного - наличие алтернативы не всегда лутше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:42 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Диез Код: java 1.
Давайте немного поправим, а то совсем убого выглядит Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:50 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловДиез Код: java 1.
Давайте немного поправим, а то совсем убого выглядит Код: java 1.
Хотел, чтобы было нагляднее для mikron. В C# же нет method references, как в Java ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 10:55 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
mikronДиезпропущено... Ну, попробуйте добавить null в понимании Java/C# в какой-нибудь Haskell. "Неинициализированное иммутабельное значение.." - мне кажется, это бред ))) . Подумайте тоже, ага? Я не знаю этих языков, поэтому не понимаю вашу рагументацию. Я хотел показать от противного - наличие алтернативы не всегда лутше. Вы пришли в раздел Java, подняли топик трехлетней давности, и начали в довольно агрессивном тоне критиковать разработчиков Java, при этом не вполне понимая, что ими двигало. Ну какой тут конструктив может быть ? )) . Так, флейм на тему... Сорри, сольюсь пожалуй, работать надо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:00 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
ДиезВ C# же нет method references, как в Java Есть, называются delegate. ДиезNull нельзя использовать в цепочке вычислений, получим NPE в случае отсутствия значения. ваше утверждение таким образом опровергнуто: Мои примеры показывают как легко null может итегрироватся в цепочку вычислений. И главное - даже пример на яве лаконичней и еффективней. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:05 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
ДиезВы пришли в раздел Java, подняли топик трехлетней давности, и начали в довольно агрессивном тоне критиковать разработчиков Java, при этом не вполне понимая, что ими двигало. Я пришёл спросить как себя чувствуйт другие. А здесь есть разработчики явы? Если есть те кто придумал "Оптинал"? им откыто, прямым текстом - кретины! Ко всем осталным отношения не имеет. Так что вы не обрашяйте внимания, это не к вам. Я не хотел вас обидет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:12 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
mikronДиезВ C# же нет method references, как в Java Есть, называются delegate. (facepalm) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:15 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
mikronЯ пришёл спросить как себя чувствуйт другие. А здесь есть разработчики явы? Если есть те кто придумал "Оптинал"? им откыто, прямым текстом - кретины! Ко всем осталным отношения не имеет. Так что вы не обрашяйте внимания, это не к вам. Я не хотел вас обидет. Детский сад, вторая четверть. Ваша истерика нам очень важна. Пишите ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:26 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Я предлагаю не мешать функциональный ЯП и не функциональный. Нахрена приводить языки где null нет или логика с null не используется? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 11:37 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Я думаю что невозможно (не удастся) обсуждать сферический Optional в вакууме. Мы так или иначе в поисках альтернатив будем делать сравнения с другими яп, парадигмами и подходами. И это хорошо. А самое плохое - ругать не разобравшись. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 13:44 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
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.
Обрати внимание, все функции принимают конкретные объекты, а не Option. Задача распаковать\запаковать Option лежит на методах map и flatMap монады(в данном случае Option), твоя задача писать бизнес-логику а не париться о null и т.д. Но так как синтаксиса for{ <- } в Java нету, то и Optional намного менее мощная и нужная штука. Относится не только к Scala, а к любому декларативному языку, на самом деле я тоже долго не понимал почему Java так не любят, пока не потрудился и не разобрался с Haskell и попутно Scala. И хотя я до сих пор вижу некоторые преимущества в Java(не языке, а платформе и сообществе), но знание двух парадигм конкретно помогает посмотреть на код с разных сторон, так что рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 14:31 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Petro123Я предлагаю не мешать функциональный ЯП и не функциональный. Нахрена приводить языки где null нет или логика с null не используется? Так нахрена совать ФП концепт(Optional, Stream..) в сугубо императивный язык программирования? Это был риторический вопрос, реалии таковы, что ФП идеи просачиваются в ООП языки, а не наоборот, ну и если делаете новые фичи, ну так делайте нормально. Есть подозрение что pattern-matching тоже кривой будет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 14:36 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
забыл никМир меняется, функциональщина и декларативный подход лезетне верю что залезет)). Про ООБД совсем недавно тоже пророчили. Но РСУБД как была так и осталась. Я за императивный код. Но мысли твои интересные. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 15:37 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
господа, идея Option проста как валенок... если программа открывает порт, или файл, или парсит строку в цифру может случится исключение. сигнатура метода заставляет Вас быть готовым обработать это исключение либо переебросить его для обработки выше. Вы не можете избежать этого. в добавление к этому Option, также как и как исключения, будет заставлять програмиста быть готовым к обработке None. That's it! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 16:46 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
Cheblinгоспода, идея Option проста как валенок... если программа открывает порт, или файл, или парсит строку в цифру может случится исключение. сигнатура метода заставляет Вас быть готовым обработать это исключение либо переебросить его для обработки выше. Вы не можете избежать этого. в добавление к этому Option, также как и как исключения, будет заставлять програмиста быть готовым к обработке None. That's it! А обьяснишь чем это отличается от checked exceptions?:) Не все так просто ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 17:00 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
CheblinNone А что такое None и зачем быть готовым к его обработке? например в ф-ции: Код: java 1. 2. 3.
Чем None лучше/хуже, чем выход за Integer.MAX_VALUE, Integer.MIN_VALUE ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 17:03 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
А если говорить об эффективности, то это "синтаксический сахар" который фактически приводит еще к одному уровню boxing/unboxing. В общем, вещь явно совершенно не бесплатная IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 17:07 |
|
Используете вы Optional ?
|
|||
---|---|---|---|
#18+
А что такое None и зачем быть готовым к его обработке? сори в Rust е по-уши, машинально написал. надеюсь все поняли о чем я. Leonid KudryavtsevА если говорить об эффективности, то .... вещь явно совершенно не бесплатная хочется поговорить о эффективности Exceptions? не надо себя сдерживать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2018, 17:33 |
|
|
start [/forum/topic.php?fid=59&msg=39678902&tid=2121883]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 196ms |
0 / 0 |