|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Сори, если вопрос глупый, но что-то не могу допереть.. Код: java 1.
- Здесь getPS() возвращает Boolean, и, как оказалось, может быть NULL, соответственно с бросанием NPE.. А можно как-то одной строкой, не мостряча доп.проверку, например, также тернарным оператором, проверить на NULL, и, если не NULL, то вернуть соответствующие значения? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 17:18 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Java это боль Смирись ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 17:23 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesierА можно как-то одной строкой, не мостряча доп.проверку, например, также тернарным оператором, проверить на NULL, и, если не NULL, то вернуть соответствующие значения? - если null считать за false, то: Код: java 1.
- если null значащий: Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 17:34 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesierСори, если вопрос глупый, но что-то не могу допереть.. Код: java 1.
- Здесь getPS() возвращает Boolean, и, как оказалось, может быть NULL, соответственно с бросанием NPE.. А можно как-то одной строкой, не мостряча доп.проверку, например, также тернарным оператором, проверить на NULL, и, если не NULL, то вернуть соответствующие значения? Поскольку тернарная операция - это функция - то ты должен определить семантику NULL значения. Ты не можешь вернуть НИЧЕГО. С другой стороны если посмотреть на код который обрамляет эту функцию - то попробуй перейти на Groovy с использованием null-safe operator. Это синтаксический сахар который позволяет игнорировать действия над null-полями в объекте. И игнорировать рекурсивно во вложениях. Попробуй отказаться от Boolean и перейти на boolean-примитив если можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2019, 20:01 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 10:28 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizex Код: java 1.
полностью извратился смысл компактного и читабельного. имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 10:59 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Petro123betelgeizex Код: java 1.
полностью извратился смысл компактного и читабельного. имхо Тернарная операция все равно приятнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 11:31 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
maytonPetro123пропущено... полностью извратился смысл компактного и читабельного. имхо Тернарная операция все равно приятнее. "читабельнее" и "приятнее" - это чисто субъективный понятия :) Мне, например, линейная цепочка вычислений более наглядна, чем пачка вложенных 'if'-ов v. пусть и с компактным синтаксисом. Код: java 1.
А вот то, что в варианте тернарного оператора дважды вызывается getPs() - это объективный недочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:14 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizex Мне, например, линейная цепочка вычислений более наглядна, чем пачка вложенных 'if'-ов v. пусть и с компактным синтаксисом. Код: java 1.
Вам такая запись может и нагляднее, но объективно это не в нотации, и вообще, у меня редактор сам переносы расставит.. )) betelgeizexА вот то, что в варианте тернарного оператора дважды вызывается getPs() - это объективный недочет. А что делать!... В if-ах третьего-то не дано, приходится вот так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:36 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesierbetelgeizex ... Код: java 1.
Вам такая запись может и нагляднее, но объективно это не в нотации, и вообще, у меня редактор сам переносы расставит.. )) Разумеется, это не Java; это то, вот что у меня в голове превращается вариант с тернарным оператором :) И это как раз я считаю _менее_ наглядным, чем вариант с Optional. mesier betelgeizexА вот то, что в варианте тернарного оператора дважды вызывается getPs() - это объективный недочет. А что делать!... В if-ах третьего-то не дано, приходится вот так. Даже если сейчас getPs() - тупой геттер, то через какое-то время в него могут попасть весьма тяжелые вычисления. Надо избегать нескольких вызовов! Например, сохранить результат в переменную, но тогда "как-то одной строкой" не получится. А чем вас не устраивает однострочник с Optional ? Ну, кроме того, что символов больше? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:49 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizexmaytonпропущено... Тернарная операция все равно приятнее. "читабельнее" и "приятнее" - это чисто субъективный понятия :) Мне, например, линейная цепочка вычислений более наглядна, чем пачка вложенных 'if'-ов v. пусть и с компактным синтаксисом. Код: java 1.
А вот то, что в варианте тернарного оператора дважды вызывается getPs() - это объективный недочет. Надо всегда смотреть в стек. Сначала language. Его возможности. По максимуму решить задачу на этом уровне. Тернарная операция это уровень языка. Самое перформансное решениею. Тем более что агрессивный оптимизатор уже на этом уровне может строить свои предположения об оптимизации и вводить временные переменные и тому подобное. Сюда-же до кучи null-безопасное разыменование (если оно поддерживается в языке) как в Groovy. Второй уровень - библиотеки. Optional. Но проблема топика как всегда в изначальной постановке. Кому вообще нужен Boolean стройной логикой? Что это за смысл? Да. Нет. И неопределено. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:57 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizex"читабельнее" и "приятнее" - это чисто субъективный понятия :)вариант Kachalov лучше вашего. Вот и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 12:58 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
С тройной логикой я имел в виду. true|false|null ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:00 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
maytonТернарная операция это уровень языка+1 И мне по барабану что двойной вызов. Прикладник вызубрит эту особенность в оперативной памяти. Пока косяк не устранят. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:00 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mayton... Надо всегда смотреть в стек. Сначала language. Его возможности. По максимуму решить задачу на этом уровне. Тернарная операция это уровень языка. Самое перформансное решениею. Тем более что агрессивный оптимизатор уже на этом уровне может строить свои предположения об оптимизации и вводить временные переменные и тому подобное. Сюда-же до кучи null-безопасное разыменование (если оно поддерживается в языке) как в Groovy. Второй уровень - библиотеки. Optional. Так можно далеко зайти... Пример: 'new' - уровень языка, DI container - библиотека. Давайте откажемтся от DI и будем передавать зависимости руками? По максимуму использовать язык... )) maytonНо проблема топика как всегда в изначальной постановке. Кому вообще нужен Boolean стройной логикой? Что это за смысл? Да. Нет. И неопределено. Например, флаг, пришедший из БД. Или Query-параметр. Да куча вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:06 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
А просто функцию сделать? Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:10 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Petro123betelgeizex"читабельнее" и "приятнее" - это чисто субъективный понятия :)вариант Kachalov лучше вашего. Вот и все. Давайте на этом и остановимся. Конечно, вы правы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:13 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Alexey TominА просто функцию сделать? Код: java 1. 2. 3.
Это самый лучший вариант. Серьезно, этакий DSL... Но ТС хотел одной строкой, не мостряча ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:18 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Alexey TominА просто функцию сделать? Код: java 1. 2. 3.
Тогда при вызове этой функции придётся пожертвовать принципом «short-circuit boolean evaluation», что не всегда приемлемо. Возможно, более удачным будет вариант с применением лямбд: Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:21 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Владимир П.Alexey TominА просто функцию сделать? Код: java 1. 2. 3.
Тогда при вызове этой функции придётся пожертвовать принципом «short-circuit boolean evaluation», что не всегда приемлемо. Возможно, более удачным будет вариант с применением лямбд: Код: java 1. 2. 3.
не, можно еще усложнить...наверное ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:29 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Озверинне, можно еще усложнить...наверное Нафига? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:30 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizexНапример, флаг, пришедший из БД. Или Query-параметр. Да куча вариантов. Хорошо. Расскажите мне семантику этого флага. У нег 3 состояния. Может стоило ввести 3 константы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:48 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
betelgeizexТак можно далеко зайти... Пример: 'new' - уровень языка, DI container - библиотека. Давайте откажемтся от DI и будем передавать зависимости руками? По максимуму использовать язык... )) Я протестую! Я этого не говорил. Аналогии с new/DI вообще неуместны. Не стоит додумывать и добавлять новые смыслы. Моя позиция была только по синтаксису логических условий. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 13:51 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
maytonbetelgeizexНапример, флаг, пришедший из БД. Или Query-параметр. Да куча вариантов. Хорошо. Расскажите мне семантику этого флага. У нег 3 состояния. Может стоило ввести 3 константы? Состояния очевидные: "Ответил ДА" / "Ответил НЕТ" / "Не ответил" Можно ввести 3 статуса, не вопрос. Но я бы не плодил новых сущностей и использовал бы всем известную семантику NULL-полей в RDBMS. Как контрпример, можно рассмотреть другую семантику: "ДА"/"НЕТ"/"НЕ ПРИМЕНИМО" - вот тут три константы будут удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 14:08 |
|
|
start [/forum/topic.php?fid=59&msg=39785363&tid=2121440]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
63ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 189ms |
0 / 0 |