|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
https://checkerframework.org/ Сегодня наткнулся на очередной срач Optional vs. NULL , правда там против Optional выступает автор lombok кому лень читать все там примерно так: там чувака слезно умоляют добавить геттеры в lombok, которые бы возвращали Optional, вместо значения, а чувак всеми правдами и неправдами отнекивается, и вроде как все более-менее складно разложил, доводы примерно такие: - типов нала маловато - нужно штуки 3-4 - повсеместного использования Optional в жаве не будет никогда, потому что есть куча уже написанных библиотек, которые никто на Optional переводить не будет - если ты данные прилетающие из внешней библиотеки обрамляешь в Optional.ofNullable на случай вдруг там что не то приедет, то ты суть бракодел - у Optional будущего нет, а добавив фичу к себе в проект придется еще поддерживать... И чет тип активно топит за этот checkerframework, пробовал кто, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2021, 23:00 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, ну, если бут не спрашивая по умолчанию ставит эту либу то за ним будущее))) \.m2\repository\org\checkerframework ... |
|||
:
Нравится:
Не нравится:
|
|||
02.01.2021, 11:18 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2021, 10:43 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, ИМХО "лечение хуже болезни". Если нужно Null Safety используй Kotlin :-) А так, если идёт не явное преобразование в Optional, мы получаем "на заборе написано ..., а там дрова лежат" :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2021, 19:56 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Kachalov Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях Вообще-то Optional и не должен сереализоваться так как этот тип исключительно для возврата существует, о чём явно в документации написано. А сериализоваться должны только поля класса (которые не должны быть Optional) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 00:56 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Андрей Панфилов https://checkerframework.org/ Сегодня наткнулся на очередной срач Optional vs. NULL , правда там против Optional выступает автор lombok И чет тип активно топит за этот checkerframework, пробовал кто, нет? Чтение документации на этот фреймворк приводит к выводу: Ешё больше аннотаций богу аннотаций. + ко времени компиляции + к проверкам в рантайме - к модульности в проекте (в модулях рефлексия не особо работает) - к дебагу (к коду программы добавляется код обработки аннотаций/параметров) ИХМО с момента введения Optional в Java8 они достаточно прочно вошли в Java мир чтобы можно было их спокойно использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 01:24 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
2 All! Вариант 1 или вариант 2 ? (1) Код: java 1. 2. 3. 4. 5.
(2) Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 00:51 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton 2 All! Вариант 1 или вариант 2 ? (1) Код: java 1. 2. 3. 4. 5.
(2) Код: java 1. 2. 3. 4. 5.
Отвечу по scala, там option удобнее. Так вот, если интерфейс между своими подмодулями, то option. Если выставляешь api наружу то либо String method throws exception, либо Either[String, Error] и ни в коем случае null ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 01:23 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Dmitry Eliseev Kachalov Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях Вообще-то Optional и не должен сереализоваться так как этот тип исключительно для возврата существует, о чём явно в документации написано. А сериализоваться должны только поля класса (которые не должны быть Optional) - в распределенных JavaEE приложениях метод возвращающий Optional дает ошибку, так как результат не сериализуется и не может быть передан (например по сети). Я имел в виду remote-интерфейсы (remote business interface). Мое утверждение никак не противоречит документации. Вот так делать не надо: Код: java 1. 2. 3. 4. 5. 6.
А вот так можно: Код: java 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 12:31 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception. Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет "натянут" на тот контейнер куда мы грузим логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 12:41 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton 2 All! Вариант 1 или вариант 2 ? (1) Код: java 1. 2. 3. 4. 5.
(2) Код: java 1. 2. 3. 4. 5.
вот есть метод: Код: java 1.
он внезапно вернул Optional.empty(), результатом могут быть следующие причины: - такого сотрудника нет вообще - сотрудник есть, но зп. не указана - у вызывающей стороны нет прав, чтобы смотреть зп. сотрудника или сотрудника вообще - в релизации наговнокодили вопрос: как 4 разные ситуации обработать одним Optional<?>? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 12:51 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception. Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет "натянут" на тот контейнер куда мы грузим логику. То есть прогер то пишет эксцепшены. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 13:28 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception. Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет "натянут" на тот контейнер куда мы грузим логику. То есть прогер то пишет эксцепшены. Тогда и Optional мог быть обработан. Даже без сериализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 13:36 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
Андрей Панфилов он внезапно вернул Optional.empty(), результатом могут быть следующие причины: - такого сотрудника нет вообще - сотрудник есть, но зп. не указана - у вызывающей стороны нет прав, чтобы смотреть зп. сотрудника или сотрудника вообще - в релизации наговнокодили вопрос: как 4 разные ситуации обработать одним Optional<?>? Ну... если мы обсуждаем уже не мой а ваш интерфейс. Разумеется подход будет другой. В теме где мы говорили про NPE, предлагалось решение - возвращать некий обобщённый объект EmployeeResponse где все статусы будут учтены для того чтобы UI всегда знал как отображать. И никаких nulls. А так конечно... в случае с 2 вариантами опционала - Nemo omnia potest scire. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 13:44 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton, Кем? Райзе ловит либа jsp или спринга или... и переводит в своё чего то там.. Либа определяет архитектуру. Пока не видел либ требующих Optional ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:14 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Кем? Райзе ловит либа jsp или спринга или... и переводит в своё чего то там.. Либа определяет архитектуру. Пока не видел либ требующих Optional Мне выше сказали - опшионал не возвращай. Эксцепшен бросай. Я - оппонирую. Почему ЭТО можно а ТО нельзя? JSP - частный случай. У меня может быть свой протокол на Thrift или Protobuf. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:28 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton, >Почему ЭТО можно а ТО нельзя? = всё можно)))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:33 |
|
The Checker Framework - кто-нибудь пользвоался?
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp mayton, Кем? Райзе ловит либа jsp или спринга или... и переводит в своё чего то там.. Либа определяет архитектуру. Пока не видел либ требующих Optional Мне выше сказали - опшионал не возвращай. Эксцепшен бросай. Я - оппонирую. Почему ЭТО можно а ТО нельзя? JSP - частный случай. У меня может быть свой протокол на Thrift или Protobuf. Ок, опять отвечаю в рамках scala. Optional - это всего лишь тип эффекта описывающий что возвращаемое значение не определено, само по себе не несет никакого business value, если этот код торчит наружу. Optional полезен когда ты находишься внутри монады, т.е в некоем контексте внутри своего приложения. Что касается эксепшена или either - то он имеет бизнес значение, потому что по сути любая программа может быть представлена в виде типа Environment => Either[Result, Error], то бишь принимает на вход некий энвайрнмент(конфиги соединение с БД) и либо возвращает ошибку либо некий полезный результат для внешнего вызывающего ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2021, 14:36 |
|
|
start [/forum/topic.php?fid=59&msg=40043679&tid=2120531]: |
0ms |
get settings: |
26ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
415ms |
get tp. blocked users: |
1ms |
others: | 309ms |
total: | 826ms |
0 / 0 |