Spec-Zone.ru › Kotlin 1.9

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

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

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

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

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

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

Миграция к новому стилю кода

Переключение на стиль кода Kotlin Coding Conventions можно выполнить в диалоговом окне Настройки/Предпочтения | Редактор | Стиль кода | 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 папку необходимо зафиксировать в системе управления версиями. В качестве альтернативы, можно использовать kotlin.code.style=obsolete для проектов, настроенных с помощью Gradle или Maven.

Последнее изменение: 01 декабря 2021
Средства разработки для 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