Шаг 31.
Основы Kotlin.
Функции. Выделение кода в функции

    На этом шаге мы рассмотрим алгоритм выделения кода в функцию.

    Логика, которую вы написали для NyetHack в предыдущих шагах, была разумной, но лучше было бы организовать код в функции. Наше первое задание: реорганизовать проект и инкапсулировать большую часть логики в функции. Это подготовит почву для добавления новых возможностей в NyetHack.

    Означает ли это, что придется удалить весь код и переписать всю программу? Боже упаси. IntelliJ поможет вам сгруппировать логику в функции.

    Начнем с того, что откроем проект NyetHack. Убедитесь, что файл Game.kt открыт в редакторе. Далее выделите условное выражение, которое записывает сообщение о состоянии игрока в healthStatus. Нажмите левую кнопку мыши и, удерживая ее, протяните указатель мыши от первой строки с объявлением healthStatus, до конца выражения, включая закрывающую фигурную скобку. Примерно так:


Рис.1. Выделение фрагмента

    Щелкните правой кнопкой мыши на выделенном фрагменте. Выберите в контекстном меню пункт Refactor | Function... (рисунок 2).


Рис.2. Выделение кода в функцию

    Появится диалоговое окно Выделения функции, как на рисунке 3.


Рис.3. Диалоговое окно выделения функции

    Элементы этого окна мы рассмотрим чуть ниже. А пока введите "formatHealthStatus" в поле Name, как показано выше, а все остальное оставьте как есть. После этого нажмите OK. IntelliJ добавит определение функции в конец файла Game.kt, как показано ниже:

private fun formatHealthStatus(healthPoints: Int, isBlessed: Boolean): String {
    val healthStatus = when (healthPoints) {
        100 -> "is in excellent condition!"
        in 90..99 -> "has a few scratches."
        in 75..89 -> if (isBlessed) {
            "has some minor wounds but is healing quite quickly!"
        } else {
            "has some minor wounds."
        }
        in 15..74 -> "looks pretty hurt."
        else -> "is in awful condition!"
    }
    return healthStatus
}
Файл с проектом можно взять здесь.


Рис.4. Добавление новой функции

    В нашей функции formatHealthStatus появился новый код. Давайте разберем его.

    На следующем шаге мы рассмотрим строение функции.




Предыдущий шаг Содержание Следующий шаг