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