Pull to refresh

Comments 5

Про lateinit как-то натянуто, ИМХО.

Если нет уверенности, что не null — вызывайте isInitialized(). Но это уже костыль к возможной двойной архитектурной проблеме, в которой lateinit первый звоночек, но, зачастую, такие ленивые мемберы — абсолютно нормальное некостыльное решение, с тем же JavaFX и прочими bindings.

Согласен. Обзывать костылями может каждый.

Котлин - язык с очень продуманный дизайном и максимально developer-friendly 🚀

Многие пункты вызвали в памяти нетленку Дейкстры - "Писать на фортране можно на любом языке"

Кажется все эти "особенности" отражены в офф. документации, не?

Про lateinit уже сказали, если разраб не может проверить все ли ленивые переменные проинициализированы, то тут увы. Язык то тут причём?

Пример с функцией-расширением тоже какой-то натянутый, в чём проблема написать:

private val unsafeMap = ConcurrentHashMap<Int, Int>() ?

В примере про extension функцию contains() сложность алгоритма не меняется, а остаётся линейной. Просто добавляется лишняя runtime проверка: if (this is Collection), ну и + вызовы лишней обёртки, которые и влияют на производительность.

Про extension nullable toString() и всё остальное можно найти даже в переведённой русскоязычной документации.

Sign up to leave a comment.