Что если пометить все функции inline

«Что если пометить все функции inline» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Пометка всех функций inline может привести к увеличению размера бинарного файла, так как компилятор будет вставлять тело функции в каждое место её вызова, а не генерировать отдельный вызов.

Плюсы:

  • Уменьшение накладных расходов на вызов функции (актуально для лямбд и функций высшего порядка).
  • Возможность использования non-local returns в лямбдах.

Минусы:

  • Увеличение размера кода (особенно если функция вызывается многократно).
  • Нет смысла для больших функций (компилятор может проигнорировать inline).

Пример:

inline fun calculate(a: Int, b: Int, op: (Int, Int) -> Int): Int = op(a, b)

// После компиляции тело лямбды встроится в вызов
val result = calculate(2, 3) { x, y -> x + y }  

Используйте inline осознанно, в основном для лямбд и небольших утилитных функций.