Spec-Zone.ru › Kotlin 1.8

Переход к стилю кода Kotlin

Конвенции кодирования Kotlin и форматировщик IntelliJ IDEA

Конвенции кодирования Kotlin влияют на несколько аспектов написания типичного кода Kotlin, и среди них набор рекомендаций по форматированию, направленных на повышение читаемости кода Kotlin.

К сожалению, форматировщик кода, встроенный в IntelliJ IDEA, работал задолго до выхода этого документа и теперь имеет стандартную настройку, которая генерирует другое форматирование по сравнению с тем, что сейчас рекомендуется.

Может показаться логичным шагом устранить эту неясность, изменив значения по умолчанию в IntelliJ IDEA и сделав форматирование согласованным с конвенциями кодирования Kotlin. Но это означало бы, что во всех существующих проектах Kotlin будет активирован новый стиль кода в тот момент, когда плагин Kotlin будет установлен. Не совсем ожидаемый результат для обновления плагина, верно?

Вот почему вместо этого у нас есть следующий план миграции:

  • Включить официальное форматирование стиля кода по умолчанию, начиная с Kotlin 1.3, и только для новых проектов (старое форматирование можно включить вручную)

  • Авторы существующих проектов могут выбрать переход к конвенциям кодирования Kotlin

  • Авторы существующих проектов могут выбрать явное объявление использования старого стиля кода в проекте (таким образом, проект не будет затронут переключением на значения по умолчанию в будущем)

  • Переключиться на стандартное форматирование и сделать его согласованным с конвенциями кодирования Kotlin в Kotlin 1.4

Различия между "Конвенциями кодирования Kotlin" и "Стандартным стилем кода IntelliJ IDEA"

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

Code formatting

На практике довольно много кода затронуто, поэтому это можно считать значительным обновлением стиля кода.

Обсуждение перехода к новому стилю кода

Принятие нового стиля кода может быть очень естественным процессом, если он начинается с нового проекта, когда нет кода, отформатированного старым способом. Именно поэтому начиная с версии 1.3 плагин Kotlin для IntelliJ IDEA создаёт новые проекты с форматированием из документа Конвенции кодирования, который включён по умолчанию.

Изменение форматирования в существующем проекте — задача гораздо более сложная и, вероятно, должна начинаться с обсуждения всех нюансов с командой.

Основным недостатком изменения стиля кода в существующем проекте является то, что функция отслеживания изменений/комментариев в системе контроля версий чаще будет указывать на нерелевантные коммиты. Хотя каждая система контроля версий имеет какой-то способ решения этой проблемы ("Комментировать предыдущую версию" может быть использована в IntelliJ IDEA), важно решить, стоит ли новый стиль всех усилий. Практика разделения коммитов по форматированию кода и значимых изменений очень помогает при последующих исследованиях.

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

В общем случае, для небольших проектов мы рекомендуем конвертировать все файлы сразу.

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

Переход к новому стилю кода

Переключение на стиль кода Конвенций кодирования Kotlin можно выполнить в диалоговом окне Настройки/Предпочтения | Редактор | Стиль кода | Kotlin. Переключите схему на Проект и активируйте Установить из... | Руководство по стилю Kotlin.

Для совместного использования этих изменений всеми разработчиками проекта необходимо добавить папку .idea/codeStyle в систему контроля версий.

Если для конфигурации проекта используется внешняя система сборки и было принято решение не делиться папкой .idea/codeStyle, конвенции кодирования Kotlin можно принудительно задать с помощью дополнительного свойства:

В Gradle

Добавьте свойство kotlin.code.style=official в файл gradle.properties в корне проекта и добавьте файл в систему контроля версий.

В Maven

Добавьте свойство kotlin.code.style official в файл корневого проекта pom.xml.

<properties> <kotlin.code.style>official</kotlin.code.style> </properties>

Наличие параметра kotlin.code.style может изменить схему стиля кода при импорте проекта и может изменить настройки стиля кода.

После обновления настроек стиля кода активируйте Переформатировать код в представлении проекта для желаемого объёма.

Reformat code

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

Сохранение старого стиля кода в проекте

Всегда можно явно установить стиль кода IntelliJ IDEA как правильный стиль кода для проекта:

  1. В Настройки/Предпочтения | Редактор | Стиль кода | Kotlin переключитесь на схему Проект.

  2. Откройте вкладку Загрузка/Сохранение и в поле Использовать значения по умолчанию из выберите Устаревший стиль кода IntelliJ IDEA для Kotlin.

Для совместного использования изменений среди разработчиков проекта необходимо добавить папку .idea/codeStyle в систему контроля версий. В качестве альтернативы для проектов, настроенных с помощью Gradle или Maven, можно использовать kotlin.code.style=obsolete.

Последнее изменение: 10 января 2023 года
IDE для разработки на Kotlin Запуск фрагментов кода

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/code-style-migration-guide.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API