Переход к стилю кода 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 рекомендуется использовать одинарный отступ в тех случаях, когда ранее был принудительно установлен длинный отступ продолжения.
На практике довольно много кода затронуто, поэтому это можно считать значительным обновлением стиля кода.
Обсуждение перехода к новому стилю кода
Принятие нового стиля кода может быть очень естественным процессом, если он начинается с нового проекта, когда нет кода, отформатированного старым способом. Именно поэтому, начиная с версии 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>
После обновления настроек стиля кода активируйте Переформатировать код в представлении проекта на желаемом уровне.
Для поэтапной миграции можно включить проверку Файл не отформатирован в соответствии с настройками проекта. Она выделит места, которые нужно переформатировать. После включения параметра Применять только к изменённым файлам проверка будет показывать проблемы с форматированием только в изменённых файлах. Такие файлы, скорее всего, будут вскоре добавлены в коммит.
Сохранение старого стиля кода в проекте
Всегда можно явно задать стиль кода IntelliJ IDEA как правильный стиль кода для проекта:
В Настройки/Предпочтения | Редактор | Стиль кода | Kotlin переключитесь на схему Проект.
Откройте вкладку Загрузка/Сохранение и в поле Использовать значения по умолчанию из выберите Устаревший стиль кода Kotlin IntelliJ IDEA.
Для совместного использования изменений среди разработчиков проекта .idea/codeStyle папку необходимо добавить в систему управления версиями. В качестве альтернативы, для проектов, настроенных с помощью Gradle или Maven, можно использовать kotlin.code.style=obsolete.
© 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