Size: a a a

Kotlin Community

2020 November 27

VP

Vladimir Petrakovich in Kotlin Community
И что ещё интереснее, в каждом втором экстеншене unchecked cast.
Может, так эффективнее 🤷‍♂️
источник

AD

Aleksey D. in Kotlin Community
Denys
А если там throwable?
и что?
источник

VP

Vladimir Petrakovich in Kotlin Community
Я бы запихал внутрь fold, а остальное экстеншенами, но, видимо, я чего-то не знаю
источник

D

Denys in Kotlin Community
Denys
А, проглядел, что мы про резалт. Пардон. 🌚
Полагаю, orNull() - это стандартный подход, определенный во всей стдлибе. Я бы ожидал его в методах.
источник

AD

Aleksey D. in Kotlin Community
Vladimir Petrakovich
Я бы запихал внутрь fold, а остальное экстеншенами, но, видимо, я чего-то не знаю
просто изначальная идея рисширений, насколько я знаю - писать через . там, где нет возможности добавить метод 🤔
источник

VP

Vladimir Petrakovich in Kotlin Community
Aleksey D.
просто изначальная идея рисширений, насколько я знаю - писать через . там, где нет возможности добавить метод 🤔
Ну с одной стороны да, а с другой
https://elizarov.medium.com/extension-oriented-design-13f4f27deaee
источник

AD

Aleksey D. in Kotlin Community
вместо SomethingUtils.transform(something) - something.transform()
источник

D

Denys in Kotlin Community
Aleksey D.
вместо SomethingUtils.transform(something) - something.transform()
Это один из юзкейсов, но не единственный.
источник

AI

Arkadii Ivanov in Kotlin Community
Aleksey D.
интересно, чем продиктовано следующее разделение?
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-result/

getOrNull - метод
getOrElse - расширение
Это общий подход к дизайну API: иметь минимальный набор в самом классе/интерфейсе, а всё остальное расширения.
источник

VP

Vladimir Petrakovich in Kotlin Community
Aleksey D.
интересно, чем продиктовано следующее разделение?
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-result/

getOrNull - метод
getOrElse - расширение
Кажется, я понял
источник

VP

Vladimir Petrakovich in Kotlin Community
Контракты разрешены только в top-level функциях же
источник

VP

Vladimir Petrakovich in Kotlin Community
Видимо, магия @Suppress в этот раз не вывезла
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Контракты разрешены только в top-level функциях же
Это ж вроде не мешает предложенному варианту с fold-методом и всем остальным как экстеншны, не?
источник

AD

Aleksey D. in Kotlin Community
Arkadii Ivanov
Это общий подход к дизайну API: иметь минимальный набор в самом классе/интерфейсе, а всё остальное расширения.
но при этом никаких жестких правил?
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Это ж вроде не мешает предложенному варианту с fold-методом и всем остальным как экстеншны, не?
Мешает. Ты не сможешь написать контракт в fold.
источник

AI

Arkadii Ivanov in Kotlin Community
Aleksey D.
но при этом никаких жестких правил?
Нет, просто вроде есть рекомендация в coding guidelines или какие они там
источник

AD

Aleksey D. in Kotlin Community
Vladimir Petrakovich
Мешает. Ты не сможешь написать контракт в fold.
то есть, все, где хочется иметь контракт - расширение, а без него - класс?
источник

AI

Arkadii Ivanov in Kotlin Community
В данном случае getOrElse можно заинлайнить, что даст возможность неаллоцировать лямбду
источник

VP

Vladimir Petrakovich in Kotlin Community
Aleksey D.
то есть, все, где хочется иметь контракт - расширение, а без него - класс?
Ну в данный момент есть такое ограничение. Но я бы не стал плясать от него в дизайне API. Да и всё равно они экспериментальные.
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Мешает. Ты не сможешь написать контракт в fold.
А, там контракт есть? Тогда логично. Я без сорцов под рукой :)
источник