Size: a a a

2021 February 06

IA

Igor A in pro.jvm
поэтому то и все эти chain методы плохи - хочешь влезть в середину а нельзя
источник

SU

Stanislav U. in pro.jvm
Igor A
так нельзя  потому что ответа же может не быть?
и потому что логи


V2 тоже неоптимально написан мной. там можно было .stream.collect() и было бы еще изящнее

весь дискурс на тему можно ли логику .orElseReturn() итп пилить на optional или If(NULL) проще читать
Что значит ответа может не быть? Если от executeWalletRequest(), то это == возвращаемому Optional.empty. Если от buildUnifiedBalanceRow(), то после этого .map Optional станет пустым.
источник

SU

Stanislav U. in pro.jvm
И логи ничему не мешают, абсолютно. Их можно и в .map сделать, но это так себе красиво. В peek у стрима ещё норм выглядит. + лучше их печатать внутри вызываемых методов, перед return, и у текущего перед return, да.
источник

IA

Igor A in pro.jvm
Stanislav U.
И логи ничему не мешают, абсолютно. Их можно и в .map сделать, но это так себе красиво. В peek у стрима ещё норм выглядит. + лучше их печатать внутри вызываемых методов, перед return, и у текущего перед return, да.
Выглядит это ужасно
источник

SU

Stanislav U. in pro.jvm
Можно вынести лямбды в локальные методы, и там добавить логирование, а вызовы в Optional-е ещё и короче будут из-за method reference.

Ок, да, сейчас в IDEA вставил код и понял, что не учёл один момент в коде, из-за того, что всё красное было.
источник

SU

Stanislav U. in pro.jvm
Igor A
Выглядит это ужасно
Вот теперь можно в меня кидать помидоры )))
public List<Balance> loadV1dot2() {
   return StreamEx.of(executeWalletRequest())
           .peek(json -> log.debug("wallet json: {}", json))
           .map(json -> JsonUtils.toObj(json, BalanceResponse.class))
           .peek(br -> log.debug("Parsed balanceResponse: {}", br))
           .mapToEntry(BalanceResponse::getAmounts)
           .nonNullValues()
           .flatMapValues(Collection::stream)
           .peekValues(a -> log.debug("Converting Amount: {}", a))
           .mapKeyValue(this::buildUnifiedBalanceRow)
           .peek(b -> log.debug("balance: {}", b))
           .toList();
}
источник

e

error_404 in pro.jvm
Stanislav U.
Вот теперь можно в меня кидать помидоры )))
public List<Balance> loadV1dot2() {
   return StreamEx.of(executeWalletRequest())
           .peek(json -> log.debug("wallet json: {}", json))
           .map(json -> JsonUtils.toObj(json, BalanceResponse.class))
           .peek(br -> log.debug("Parsed balanceResponse: {}", br))
           .mapToEntry(BalanceResponse::getAmounts)
           .nonNullValues()
           .flatMapValues(Collection::stream)
           .peekValues(a -> log.debug("Converting Amount: {}", a))
           .mapKeyValue(this::buildUnifiedBalanceRow)
           .peek(b -> log.debug("balance: {}", b))
           .toList();
}
🍅
источник

e

error_404 in pro.jvm
Stanislav U.
Вот теперь можно в меня кидать помидоры )))
public List<Balance> loadV1dot2() {
   return StreamEx.of(executeWalletRequest())
           .peek(json -> log.debug("wallet json: {}", json))
           .map(json -> JsonUtils.toObj(json, BalanceResponse.class))
           .peek(br -> log.debug("Parsed balanceResponse: {}", br))
           .mapToEntry(BalanceResponse::getAmounts)
           .nonNullValues()
           .flatMapValues(Collection::stream)
           .peekValues(a -> log.debug("Converting Amount: {}", a))
           .mapKeyValue(this::buildUnifiedBalanceRow)
           .peek(b -> log.debug("balance: {}", b))
           .toList();
}
ИМХО.Эти стримы выглядят ужасно и не читабельно.Я не понимаю зачем их юзать в серьезных проектах
источник

DC

Denis Chikanov in pro.jvm
error_404
ИМХО.Эти стримы выглядят ужасно и не читабельно.Я не понимаю зачем их юзать в серьезных проектах
"Эти" это какие?
источник

e

error_404 in pro.jvm
Denis Chikanov
"Эти" это какие?
Я в общем про стримы.Да,можно их юзать,но когда кода не слишком много.ИМХО,опять же.Я бы предпочел бы стримам обычный читабельный код
источник

DC

Denis Chikanov in pro.jvm
error_404
Я в общем про стримы.Да,можно их юзать,но когда кода не слишком много.ИМХО,опять же.Я бы предпочел бы стримам обычный читабельный код
Это сильно читабельнее обработки всего того же самого просто циклом
источник

DC

Denis Chikanov in pro.jvm
И в большинстве случаев куда менее error-prone
источник

e

error_404 in pro.jvm
Denis Chikanov
Это сильно читабельнее обработки всего того же самого просто циклом
Обычный цикл читабельнее для новичков,допустим,которые не знают стримов.Например пришёл человек,который не знает стримов, на проект,где все расписано стримами.И просто не понимает что тут вообще происходит
источник

e

error_404 in pro.jvm
Но опять же это лично мое мнение
источник

e

error_404 in pro.jvm
For знают все,а стримы нет
источник

DC

Denis Chikanov in pro.jvm
error_404
Обычный цикл читабельнее для новичков,допустим,которые не знают стримов.Например пришёл человек,который не знает стримов, на проект,где все расписано стримами.И просто не понимает что тут вообще происходит
Ну потому что надо знать стандартное АПИ языка, на котором пишешь, да.
Это совершенно дерьмовый аргумент, потому что так можно вообще какие угодно расширения и нововведения назвать плохими.
источник

DC

Denis Chikanov in pro.jvm
Ну и да, не знает - за неделю-другую научится их нормально читать, ещё чуть позже - нормально писать
источник

e

error_404 in pro.jvm
Denis Chikanov
Ну потому что надо знать стандартное АПИ языка, на котором пишешь, да.
Это совершенно дерьмовый аргумент, потому что так можно вообще какие угодно расширения и нововведения назвать плохими.
Нет,я не называю их плохими.Наоборот,они топовые
источник

e

error_404 in pro.jvm
error_404
Нет,я не называю их плохими.Наоборот,они топовые
Я говорю про их читабельность
источник

I

Ilia in pro.jvm
error_404
Нет,я не называю их плохими.Наоборот,они топовые
их топовость как раз в читабельности и поддерживаемости
источник