Освой Kotlin играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Разное

Исходный код хранится в файлах с расширением .kt (почему не .kot?).

Вычисляем время выполнения кода

В Java есть стандартный способ измерения кода, который мы можем использовать и в Kotlin.


val startTime = System.currentTimeMillis()

// ваш код, который нужно измерить

val totalTime = System.currentTimeMillis() - startTime

Но мы можем использовать другой читаемый код.


val elapsedTime = measureTimeMillis {
    // ваш код, который нужно измерить
}
println("The code took to execute $elapsedTime ms")

Делаем метод устаревшим (depreCATed)

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

Предположим, у вас была отличная функция feedCat(), в которой выводилось сообщение о необходимости покормить кота. Но в какой-то момент вы поняли, что кормить надо не только котиков, но и другую живность. Нужно сообщить программисту, что в новой версии библиотеки следует использовать новое имя функции - feed(). Вносим изменения в код библиотеки.


@Deprecated(
    message = "Используйте функцию feed()",
    replaceWith = ReplaceWith("feed(name)")
)

fun feedCat(name: String) {
    feed(name)
}

fun feed(name: String) {
    println("$name голодный. Покормите его")
}

Вызываем старую функцию и видим предупреждение. Меняем на новый вариант.

ReplaceWith

По умолчанию уровень устаревшего кода имеет значение DeprecationLevel.WARNING, который мы можем опустить. Также есть уровень ERROR (имя функции будет подчёркнуто красной волнистой чертой) и HIDDEN (имя функции будет выводиться красным цветом).


@Deprecated(
    message = "Используйте функцию feed()",
    level = DeprecationLevel.HIDDEN,
    replaceWith = ReplaceWith("feed(name)")
)
Реклама