Spec-Zone.ru › Kotlin 1.7

Переход к стилю кода 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 создаёт новые проекты с форматированием из документа Конвенций кодирования, который включен по умолчанию.

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

Основным недостатком изменения стиля кода в существующем проекте является то, что функция отслеживания/комментирования системы управления версиями (VCS) чаще будет указывать на нерелевантные коммиты. Хотя у каждой системы управления версиями есть определённый способ решения этой проблемы («Комментировать предыдущую версию» можно использовать в 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. Откройте вкладку Загрузка/Сохранение и в поле Использовать значения по умолчанию из выберите Устаревший стиль кода Kotlin IntelliJ IDEA.

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

Последнее изменение: 01 декабря 2021 г.
Средства разработки для Kotlin Запуск фрагментов кода

© 2010–2022 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