powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Тернарная проверка на NULL
15 сообщений из 40, страница 2 из 2
Тернарная проверка на NULL
    #39785401
betelgeizex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonbetelgeizexТак можно далеко зайти...
Пример: 'new' - уровень языка, DI container - библиотека.
Давайте откажемтся от DI и будем передавать зависимости руками? По максимуму использовать язык... ))

Я протестую! Я этого не говорил. Аналогии с new/DI вообще неуместны.
Не стоит додумывать и добавлять новые смыслы. Моя позиция была
только по синтаксису логических условий.

Ну, вы указали на общность фразы:

авторНадо всегда смотреть в стек. Сначала language. Его возможности. По максимуму решить задачу на этом уровне...
Вот я и решил развить мысль.


Я понимаю, что мог не уловить смысла. Но тогда вопрос: в чем синтаксис логических условий принципиально отличается от остальных аспектов языка?
Почему для логических условий надо использовать язык по максимуму (предпочитая его библиотекам), я для прочих задач такой посыл вами не утверждается?
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785410
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте вернёмся к теме.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785508
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mesierСори, если вопрос глупый, но что-то не могу допереть..
Код: java
1.
ac.getPs() ? "P" : "S"


- Здесь getPS() возвращает Boolean, и, как оказалось, может быть NULL, соответственно с бросанием NPE..
А можно как-то одной строкой, не мостряча доп.проверку, например, также тернарным оператором, проверить на NULL, и, если не NULL, то вернуть соответствующие значения?

мне кажется, что null здесь может быть не getPS(), а ас.
Тогда все упрощается (далее по примеру от Kachalov)

ac == null ? "ac is null" : ac.getPs() ? "P" : "S"

потому что даже если getPS возвращает null, то для NPE нет повода, поскольку по этому null доступ не производится.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785513
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего у него используется Orm-фреймворк который формирует entity корректно
(не null) а различные поля этой entity вполне могут быть null ибо такова есть база данных.
Помним что реляционная алгебра позволяет делать дырки в таблице и это норм. Это не
дефект. И я думаю что его беспокоит именно предикат ac.getPs() == null т.к. она ломает
обычный порядок исполнения тернаной операции и заставляет делать еще одну лишнюю
проверку.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785519
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

я банально перепутал Boolean с boolean, почти не писал на яве.

А к вашему вопросу о логике трех состояний, ссылочный Boolean обусловлен языком, поэтому зачем ставить вопрос о его прикладной логике.
Кстати, поэтому и Optional мне не нравится как средство проверки на null, ведь логика может быть другой. Опциональность значения это по хорошему вопрос дизайна, а наличие null в ссылке может говорить не об этом, а об аварийной ситуации в процессе получения значения.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785531
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609mayton,

я банально перепутал Boolean с boolean, почти не писал на яве.

А к вашему вопросу о логике трех состояний, ссылочный Boolean обусловлен языком, поэтому зачем ставить вопрос о его прикладной логике.
Кстати, поэтому и Optional мне не нравится как средство проверки на null, ведь логика может быть другой. Опциональность значения это по хорошему вопрос дизайна, а наличие null в ссылке может говорить не об этом, а об аварийной ситуации в процессе получения значения.
В данном конкретном кейсе Optional не нужен я считаю. Хотя он очень полезен когда вы работаете со Streams.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785536
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominА просто функцию сделать?
Код: java
1.
2.
3.
<T> T nvl2(Boolean b, T whenTrue, T whenFalse, T whenNull) {
...
}


Ну, да, вариант!
Хорошечно ещё и тем, что можно юнит-тест нарисовать. А то как-то юнит-тест для entity немного странно выглядит.. )))
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785537
mesier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСкорее всего у него используется Orm-фреймворк который формирует entity корректно
(не null) а различные поля этой entity вполне могут быть null ибо такова есть база данных.
Помним что реляционная алгебра позволяет делать дырки в таблице и это норм. Это не
дефект. И я думаю что его беспокоит именно предикат ac.getPs() == null т.к. она ломает
обычный порядок исполнения тернаной операции и заставляет делать еще одну лишнюю
проверку.
Именно так.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785538
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesier
Код: java
1.
ac.getPs() ? "P" : "S"


Интересно, что в шарпе это не скомпилируется если null возможен в возврате getPs()
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785549
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mesier,
Если сущность, то не делай её тупой. Сделай поумнее, добавив метод возврата строки или
as.getPs().asString()
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785566
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mesier,
Если сущность, то не делай её тупой. Сделай поумнее, добавив метод возврата строки или
as.getPs().asString()
Это не совсем решение проблемы автора. Это просто перенос на другой уровень.
Кроме того надо помнить о потере соотвествия между ORM-entity и умной-entity.

Вобщем memento mori. Помни.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785567
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да. Все надо учитывать.
Представь 200 свойств с null и все тут с тернарными и троичной логикой.
Это лапша код будет.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785570
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не могу себе представить одно бизнес-действие с 200 свойствами.

Как вариант serialzation или метод toString но для него нет проблемы NPE. Она решена
на коробочном уровне.
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785583
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я за то чтобы компилятор заругался на потенциальную ошибку.
Т.к. Для оператора? требуется только Да или Нет.
Imho
...
Рейтинг: 0 / 0
Тернарная проверка на NULL
    #39785586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Я-бы проверил исходник автора на SonarQube. Если тот заругается - то автор сам себе виноват. Не читает warnings.
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Тернарная проверка на NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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