Size: a a a

Kotlin Community

2020 October 19

AL

Alexander Levin in Kotlin Community
Vladimir
Так-то можно, конечно, но зачем? :) Можно сделать идентичную реализацию с обычной функцией и вызвать её через .let, потеряв немного в красоте и читаемости одной строки, но зато с меньшим количеством магии, которую придётся воспринимать другому человеку, что пришёл править этот код
А чем экстеншны более "магичны", чем обычная функция, кроме того, что условно в какой-нибудь джаве тебе для них нужен плагин?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Vladimir
Так-то можно, конечно, но зачем? :) Можно сделать идентичную реализацию с обычной функцией и вызвать её через .let, потеряв немного в красоте и читаемости одной строки, но зато с меньшим количеством магии, которую придётся воспринимать другому человеку, что пришёл править этот код
в чем магия ?

пришёл, нажал ctrl + B. хотя она прям под методом лежит. а воспронимать
.let(this::toProxies) как-то сложнее
источник

с#

саша сок #KotlinGang... in Kotlin Community
.let { toProxies(it) } не лучше
источник

VP

Vladimir Petrakovich in Kotlin Community
Вообще тут можно было бы и не выделять эту операцию в отдельный метод. Там всего одна строка и этот код всё равно не переиспользуем.
источник

K

Kirixa in Kotlin Community
саша сок #KotlinGang
.let { toProxies(it) } не лучше
🤢
источник

с#

саша сок #KotlinGang... in Kotlin Community
Vladimir Petrakovich
Вообще тут можно было бы и не выделять эту операцию в отдельный метод. Там всего одна строка и этот код всё равно не переиспользуем.
строка длинная
источник

с#

саша сок #KotlinGang... in Kotlin Community
и вот человеку, который пришёл читать этот код будет сложнее понять что происходит
источник

V

Vladimir in Kotlin Community
В этом очень простом случае да. Но со временем и ростом кодовой базы такие extension методы могут уезжать всё дальше от места своего применения и может даже в другой файл (Util.kt например)
источник

VP

Vladimir Petrakovich in Kotlin Community
саша сок #KotlinGang
строка длинная
И что? Она даже станет чуть короче, если её встроить в место вызова.
источник

VP

Vladimir Petrakovich in Kotlin Community
саша сок #KotlinGang
и вот человеку, который пришёл читать этот код будет сложнее понять что происходит
Понять, что делает этот метод, не посмотрев его реализацию, всё равно не проще
источник

V

Vladimir in Kotlin Community
Поддерживаемость такого кода деградирует со временем
источник

AL

Alexander Levin in Kotlin Community
Что-то уже совсем до мелочей докапываемся :)

Ну т.е. я бы не выносил, но это совсем фигня, если удобно - чего бы не вынести. В этой одной штуки я точно не вижу магии или деградации кода.
источник

VP

Vladimir Petrakovich in Kotlin Community
Ну да, я вижу больше проблем в том, что есть какой-то ProxiesParser вместо одной функции parse в компаньоне)
источник

с#

саша сок #KotlinGang... in Kotlin Community
Vladimir
В этом очень простом случае да. Но со временем и ростом кодовой базы такие extension методы могут уезжать всё дальше от места своего применения и может даже в другой файл (Util.kt например)
я бы переделал, будь там другой случай
источник

V

Vladimir in Kotlin Community
Так-то да, докапываюсь до мелочи, мой поинт в том, что если запиливание методов расширений для красоты перейдёт в привычку, то это поднавредит кодовой базе в перспективе
источник

РО

Рулон Обоев... in Kotlin Community
методы vs. функции го
источник

V

Vladimir in Kotlin Community
Вот mapNotNull - хороший метод расширения, делает полезную работу с предсказуемым поведением. Один раз запомнил и пользуешься всё время
источник

IP

Iaroslav Postovalov in Kotlin Community
у, автор плагина antlr для kotlin
источник

ПГ

Павло Гриник... in Kotlin Community
Играюсь сейчас с делегатами и словил очень странную хрень, которая воспроизводится чуть ли не на helloworld’е
и в жизни не видел таких стактрейсов
кто-то может подсказать ЧЯДНТ?
код выглядет вполне нормальным
минимально-воспроизводимый пример здесь:
https://pl.kotl.in/u67EUqn_-
источник

VP

Vladimir Petrakovich in Kotlin Community
Павло Гриник
Играюсь сейчас с делегатами и словил очень странную хрень, которая воспроизводится чуть ли не на helloworld’е
и в жизни не видел таких стактрейсов
кто-то может подсказать ЧЯДНТ?
код выглядет вполне нормальным
минимально-воспроизводимый пример здесь:
https://pl.kotl.in/u67EUqn_-
Баг в компиляторе, ничего необычного)
источник