|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
maytonbetelgeizexТак можно далеко зайти... Пример: 'new' - уровень языка, DI container - библиотека. Давайте откажемтся от DI и будем передавать зависимости руками? По максимуму использовать язык... )) Я протестую! Я этого не говорил. Аналогии с new/DI вообще неуместны. Не стоит додумывать и добавлять новые смыслы. Моя позиция была только по синтаксису логических условий. Ну, вы указали на общность фразы: авторНадо всегда смотреть в стек. Сначала language. Его возможности. По максимуму решить задачу на этом уровне... Вот я и решил развить мысль. Я понимаю, что мог не уловить смысла. Но тогда вопрос: в чем синтаксис логических условий принципиально отличается от остальных аспектов языка? Почему для логических условий надо использовать язык по максимуму (предпочитая его библиотекам), я для прочих задач такой посыл вами не утверждается? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 14:20 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Давайте вернёмся к теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 14:28 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesierСори, если вопрос глупый, но что-то не могу допереть.. Код: java 1.
- Здесь getPS() возвращает Boolean, и, как оказалось, может быть NULL, соответственно с бросанием NPE.. А можно как-то одной строкой, не мостряча доп.проверку, например, также тернарным оператором, проверить на NULL, и, если не NULL, то вернуть соответствующие значения? мне кажется, что null здесь может быть не getPS(), а ас. Тогда все упрощается (далее по примеру от Kachalov) ac == null ? "ac is null" : ac.getPs() ? "P" : "S" потому что даже если getPS возвращает null, то для NPE нет повода, поскольку по этому null доступ не производится. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 17:33 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Скорее всего у него используется Orm-фреймворк который формирует entity корректно (не null) а различные поля этой entity вполне могут быть null ибо такова есть база данных. Помним что реляционная алгебра позволяет делать дырки в таблице и это норм. Это не дефект. И я думаю что его беспокоит именно предикат ac.getPs() == null т.к. она ломает обычный порядок исполнения тернаной операции и заставляет делать еще одну лишнюю проверку. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 17:40 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mayton, я банально перепутал Boolean с boolean, почти не писал на яве. А к вашему вопросу о логике трех состояний, ссылочный Boolean обусловлен языком, поэтому зачем ставить вопрос о его прикладной логике. Кстати, поэтому и Optional мне не нравится как средство проверки на null, ведь логика может быть другой. Опциональность значения это по хорошему вопрос дизайна, а наличие null в ссылке может говорить не об этом, а об аварийной ситуации в процессе получения значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 17:51 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
teo609mayton, я банально перепутал Boolean с boolean, почти не писал на яве. А к вашему вопросу о логике трех состояний, ссылочный Boolean обусловлен языком, поэтому зачем ставить вопрос о его прикладной логике. Кстати, поэтому и Optional мне не нравится как средство проверки на null, ведь логика может быть другой. Опциональность значения это по хорошему вопрос дизайна, а наличие null в ссылке может говорить не об этом, а об аварийной ситуации в процессе получения значения. В данном конкретном кейсе Optional не нужен я считаю. Хотя он очень полезен когда вы работаете со Streams. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 18:03 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Alexey TominА просто функцию сделать? Код: java 1. 2. 3.
Ну, да, вариант! Хорошечно ещё и тем, что можно юнит-тест нарисовать. А то как-то юнит-тест для entity немного странно выглядит.. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 18:12 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
maytonСкорее всего у него используется Orm-фреймворк который формирует entity корректно (не null) а различные поля этой entity вполне могут быть null ибо такова есть база данных. Помним что реляционная алгебра позволяет делать дырки в таблице и это норм. Это не дефект. И я думаю что его беспокоит именно предикат ac.getPs() == null т.к. она ломает обычный порядок исполнения тернаной операции и заставляет делать еще одну лишнюю проверку. Именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 18:13 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesier Код: java 1.
Интересно, что в шарпе это не скомпилируется если null возможен в возврате getPs() ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 18:14 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mesier, Если сущность, то не делай её тупой. Сделай поумнее, добавив метод возврата строки или as.getPs().asString() ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 18:43 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Petro123mesier, Если сущность, то не делай её тупой. Сделай поумнее, добавив метод возврата строки или as.getPs().asString() Это не совсем решение проблемы автора. Это просто перенос на другой уровень. Кроме того надо помнить о потере соотвествия между ORM-entity и умной-entity. Вобщем memento mori. Помни. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 19:09 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mayton, Да. Все надо учитывать. Представь 200 свойств с null и все тут с тернарными и троичной логикой. Это лапша код будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 19:16 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
Я не могу себе представить одно бизнес-действие с 200 свойствами. Как вариант serialzation или метод toString но для него нет проблемы NPE. Она решена на коробочном уровне. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 19:20 |
|
Тернарная проверка на NULL
|
|||
---|---|---|---|
#18+
mayton, Я за то чтобы компилятор заругался на потенциальную ошибку. Т.к. Для оператора? требуется только Да или Нет. Imho ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2019, 19:48 |
|
|
start [/forum/topic.php?fid=59&msg=39785513&tid=2121440]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 169ms |
0 / 0 |