Меня в котлине бесит то, с какой периодичностью я вижу как люди пытаются всеми силами не использовать стандартные возможности языка и заменить на свои суперхитрые решения просто вместо того, чтобы написать что-то самое простое и идиоматичное. Эти решения обычно оставляют вагон каких-то допущений что с ним можно делать, а что нельзя. В них как и в любом другом коде часто есть баги. В них необходимо в принципе разбираться. По умолчанию же считаем, что в синтаксисе языка разбираться не надо, он на всех проектах один, более того даже в большинстве си-подобных языков он одинаковый.
Сам язык им это делать даёт. С идеологией у котлина изначально всё сложно, это же pragmatic general-purpose язык (aka пишите как хотите, мы не мешаем). За это и любим, конечно, за это и ненавидим. Это неправильно понимают. Рекомендаций в документации от JB не хватает, почему-то все начинают изобретать свои велосипеды вместо любой конструкции языка.
Да, я опять смотрю на тех, кто использует a?.let {}
вместо if (a != null) {}
, для кого a?.let { b } ?: run { c() }
любимая конструкция из stdlib, ведь if/else
для них нечитаемый код, а это в самый раз 🤡.
BTW scope functions самое вредное что есть в стандартной библиотеке, переубедите меня? У них чрезвычайно нишевые юзкейсы, но их почти все начинают абьюзить с того дня как узнают о них.
Или ещё много раз видел тех, кому try/catch
или when в связке с sealed классами чем-то не угодили и чей код
превращается в "функциональный" execute().onSuccess{}.onFailure{}
, где забыть ветку проще простого.
Или есть странные ребята, кто пишет collection.forEach { c -> }
вместо for (c in collection) {}
. Ноль идей зачем
этот экстеншн вообще в стандартную библиотеку добавили. Успехов вам break/continue/return
из лямбды поделать.
И у всего этого есть общий знаменатель, люди почему-то любят длинные однострочные цепочки. Совершенно не понимаю этого. Может люди думают что если они не видят, то и объекты там лишние не создаются, не знаю. В 100% случаев, если мы говорим про чистый котлин, лучше просто создать переменную с говорящим названием, на следующей строке ещё одну, там какую-нибудь функцию понятную вызвать, и так далее. Объединять всё в одну конструкцию - не надо. Вы и компилятору жизнь усложняете, и онбординг новичкам, и работу себе.
Чем людей не удовлетворяет синтаксис языка? Зачем они это делают? Зачем вы адовые однострочники пишете с кучей ограничений? Другого объяснения кроме того, что у вас за количество строчек или символов из зарплаты вычитают я не могу придумать.
А у вас есть такое? Что самое любимое вспомните?