powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / The Checker Framework - кто-нибудь пользвоался?
18 сообщений из 18, страница 1 из 1
The Checker Framework - кто-нибудь пользвоался?
    #40033012
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://checkerframework.org/

Сегодня наткнулся на очередной срач Optional vs. NULL , правда там против Optional выступает автор lombok

кому лень читать все
там примерно так: там чувака слезно умоляют добавить геттеры в lombok, которые бы возвращали Optional, вместо значения, а чувак всеми правдами и неправдами отнекивается, и вроде как все более-менее складно разложил, доводы примерно такие:
- типов нала маловато - нужно штуки 3-4
- повсеместного использования Optional в жаве не будет никогда, потому что есть куча уже написанных библиотек, которые никто на Optional переводить не будет
- если ты данные прилетающие из внешней библиотеки обрамляешь в Optional.ofNullable на случай вдруг там что не то приедет, то ты суть бракодел
- у Optional будущего нет, а добавив фичу к себе в проект придется еще поддерживать...



И чет тип активно топит за этот checkerframework, пробовал кто, нет?
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40033038
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,
ну, если бут не спрашивая по умолчанию ставит эту либу то за ним будущее)))
\.m2\repository\org\checkerframework
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40034809
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40036266
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

ИМХО "лечение хуже болезни".

Если нужно Null Safety используй Kotlin :-)

А так, если идёт не явное преобразование в Optional, мы получаем "на заборе написано ..., а там дрова лежат" :-)
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40041017
Dmitry Eliseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalov
Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях

Вообще-то Optional и не должен сереализоваться так как этот тип исключительно для возврата существует, о чём явно в документации написано. А сериализоваться должны только поля класса (которые не должны быть Optional)
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40041023
Dmitry Eliseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов
https://checkerframework.org/

Сегодня наткнулся на очередной срач Optional vs. NULL , правда там против Optional выступает автор lombok

И чет тип активно топит за этот checkerframework, пробовал кто, нет?


Чтение документации на этот фреймворк приводит к выводу:
Ешё больше аннотаций богу аннотаций.
+ ко времени компиляции
+ к проверкам в рантайме
- к модульности в проекте (в модулях рефлексия не особо работает)
- к дебагу (к коду программы добавляется код обработки аннотаций/параметров)

ИХМО с момента введения Optional в Java8 они достаточно прочно вошли в Java мир чтобы можно было их спокойно использовать.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043502
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All!

Вариант 1 или вариант 2 ?

(1)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi1 {

   @Nullable String getSome();

}



(2)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi2 {

   Optional<String> getSome();

}
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043503
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
2 All!

Вариант 1 или вариант 2 ?

(1)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi1 {

   @Nullable String getSome();

}



(2)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi2 {

   Optional<String> getSome();

}


Отвечу по scala, там option удобнее.
Так вот, если интерфейс между своими подмодулями, то option. Если выставляешь api наружу то либо String method throws exception, либо Either[String, Error] и ни в коем случае null
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043604
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Eliseev
Kachalov
Андрей Панфилов, добавлю свои три копейки: Optional не сериализуется и это ограничивает его применение в JavaEE приложениях

Вообще-то Optional и не должен сереализоваться так как этот тип исключительно для возврата существует, о чём явно в документации написано. А сериализоваться должны только поля класса (которые не должны быть Optional)

- в распределенных JavaEE приложениях метод возвращающий Optional дает ошибку, так как результат не сериализуется и не может быть передан (например по сети). Я имел в виду remote-интерфейсы (remote business interface). Мое утверждение никак не противоречит документации.

Вот так делать не надо:
Код: java
1.
2.
3.
4.
5.
6.
@Remote
public interface MaytonsFuckenApi2 {

   Optional<String> getSome();

}



А вот так можно:
Код: java
1.
2.
3.
4.
5.
6.
@Local
public interface MaytonsFuckenApi2 {

   Optional<String> getSome();

}
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043608
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception.
Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет
"натянут" на тот контейнер куда мы грузим логику.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043614
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
2 All!

Вариант 1 или вариант 2 ?

(1)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi1 {

   @Nullable String getSome();

}



(2)
Код: java
1.
2.
3.
4.
5.
public interface MaytonsFuckenApi2 {

   Optional<String> getSome();

}



вот есть метод:

Код: java
1.
Optional<BigDecimal> getEmployeeSalary(String employeeId);



он внезапно вернул Optional.empty(), результатом могут быть следующие причины:
- такого сотрудника нет вообще
- сотрудник есть, но зп. не указана
- у вызывающей стороны нет прав, чтобы смотреть зп. сотрудника или сотрудника вообще
- в релизации наговнокодили

вопрос: как 4 разные ситуации обработать одним Optional<?>?
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043647
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception.
Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет
"натянут" на тот контейнер куда мы грузим логику.
в jsp его перехватывает либа и сама шлет как ты сказал конверт.
То есть прогер то пишет эксцепшены.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043652
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton
По поводу бросания эксцепшенов можно обсудить. Во многих сетевых протоколах вообще нет понятия exception.
Есть просто некий конверт (envelope) который будет всегда возвращен. А смысл Java-exception уже будет
"натянут" на тот контейнер куда мы грузим логику.
в jsp его перехватывает либа и сама шлет как ты сказал конверт.
То есть прогер то пишет эксцепшены.

Тогда и Optional мог быть обработан. Даже без сериализации.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043654
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов

он внезапно вернул Optional.empty(), результатом могут быть следующие причины:
- такого сотрудника нет вообще
- сотрудник есть, но зп. не указана
- у вызывающей стороны нет прав, чтобы смотреть зп. сотрудника или сотрудника вообще
- в релизации наговнокодили

вопрос: как 4 разные ситуации обработать одним Optional<?>?

Ну... если мы обсуждаем уже не мой а ваш интерфейс.

Разумеется подход будет другой. В теме где мы говорили про NPE, предлагалось решение - возвращать
некий обобщённый объект EmployeeResponse где все статусы будут учтены для того чтобы UI
всегда знал как отображать. И никаких nulls.

А так конечно... в случае с 2 вариантами опционала - Nemo omnia potest scire.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043679
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Кем?
Райзе ловит либа jsp или спринга или... и переводит в своё чего то там..
Либа определяет архитектуру.
Пока не видел либ требующих Optional
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043687
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Кем?
Райзе ловит либа jsp или спринга или... и переводит в своё чего то там..
Либа определяет архитектуру.
Пока не видел либ требующих Optional

Мне выше сказали - опшионал не возвращай. Эксцепшен бросай.
Я - оппонирую. Почему ЭТО можно а ТО нельзя?

JSP - частный случай. У меня может быть свой протокол на Thrift или Protobuf.
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043691
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
>Почему ЭТО можно а ТО нельзя?
= всё можно))))))))
...
Рейтинг: 0 / 0
The Checker Framework - кто-нибудь пользвоался?
    #40043694
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
PetroNotC Sharp
mayton,
Кем?
Райзе ловит либа jsp или спринга или... и переводит в своё чего то там..
Либа определяет архитектуру.
Пока не видел либ требующих Optional

Мне выше сказали - опшионал не возвращай. Эксцепшен бросай.
Я - оппонирую. Почему ЭТО можно а ТО нельзя?

JSP - частный случай. У меня может быть свой протокол на Thrift или Protobuf.


Ок, опять отвечаю в рамках scala.
Optional - это всего лишь тип эффекта описывающий что возвращаемое значение не определено, само по себе не несет никакого business value, если этот код торчит наружу. Optional полезен когда ты находишься внутри монады, т.е в некоем контексте внутри своего приложения.
Что касается эксепшена или either - то он имеет бизнес значение, потому что по сути любая программа может быть представлена в виде типа Environment => Either[Result, Error], то бишь принимает на вход некий энвайрнмент(конфиги соединение с БД) и либо возвращает ошибку либо некий полезный результат для внешнего вызывающего
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / The Checker Framework - кто-нибудь пользвоался?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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