Skip to content

Правила внесения изменений в компоненты

Margarita Volodina edited this page Mar 23, 2021 · 2 revisions
  1. Необходимо следовать правилам работы с ветками
  2. Все зависимости, которые нужны для библиотеки и примеров, должны быть описанны в components.json
  3. Необходимо поддерживать обратную совместимость. Для этого можно пользоваться @Deprecated аннотацией для старого кода с указанием версии, когда она была добавлена. Если это невозможно, то следует сказать ответственному за этот репозиторий, в этом случае ваши изменения пойдут в след версию с другим MAJOR или MINOR значением. При нарушении обратной совместимости следует в RELEASE_NOTES.md компонента описать, как она была нарушена, и добавить лейбл NO BACKWARD COMPATIBILITY к описанию этих изменений.
  4. В каждом файле с исходным кодом должна быть лицензия
  5. Писать release notes, документацию и комментарии только на английском языке
  6. Актуализировать инструментальные и Unit тесты
  7. Актуализировать Sample модули
  8. Актуализировать Template модуль
  9. Актуализировать документацию
    1. Readme.md компонента, библиотеки,семпла
    2. Файлы из папки /docs компонента
    3. Связанные файлы из папки /docs AndroidStandard
    4. RELEASE_NOTES.md компонента

Правила разработки новых компонентов

  1. В каждом компоненте должен быть Readme.md с описанием назначения компонента и основных классов. При необходимости Readme.md следует добавить для библиотек и семплов
  2. При большом количестве документации она должна располагаться в папке /docs компонента
  3. В каждом компоненте должен быть RELEASE_NOTES.md с описанием версионных изменений
  4. Release notes, документация и комментарии должны быть только на английском языке
  5. Для каждого компонента должна быть запись в списке всех компонентов в папке /docs AndroidStandard
  6. В каждом файле с исходным кодом должна быть лицензия
  7. Для каждой библиотеки должен быть модуль с именем -sample c примером использования.
  8. Для sample-модуля должны быть написаны инструментальные тесты с проверкой работоспособности всех интерактивных элементов
  9. Для правильной конфигурации проекта компонент должен быть записан в файле components.json
  10. Все зависимости, которые нужны для библиотеки и примеров, должны быть описанны в components.json
  11. При создании примеров к модулям необходимо использовать модуль sample-common, если примеру не требуется конфигурация Dagger, или модуль sample-dagger, если примеру требуется конфигурация Dagger (можно использовать конфигурацию, поставляемую данным модулем по умолчанию, либо добавить кастомные зависимости, как описано в README.md модуля).
  12. При конфигурации нового компонента следует определить, предназначен ли он для деплоя. В зависимости от этого необходимо в build.gradle нового компонента подключить подходящий скрипт для настройки модуля - apply from: "$rootDir/buildSrc/baseDeployBuild.gradle" для модулей, которые требуется деплоить, и apply from: "$rootDir/buildSrc/baseBuild.gradle" для модулей, для деплоя не предназначенных.

Правила ведения RELEASE_NOTES

Release notes должны содержать информацию, влияющую на сам артефакт и не должны содержать инфраструктурных изменений.
Release notes не нужны при изменении:

  • .gradle файлов
  • .md файлов
  • семплов (содержимое деректорий sample)
  • тестов (содержимое деректорий test и androidTest)