В данном документе собраны общие рекомендации по написанию кода в проекте BSL Language Server.
Постарайтесь придерживаться их, и процесс ревью Вашего кода будет гладким и шелковистым (с).
Если метод на законных основаниях может возвращать null
, рекомендуется вместо явного возврата null
возвращать Optional<T>
. Исключения (например, высокочастотные или перфомансные функции) обговариваются отдельно.
- Весь код в модулях должен быть автоматически отформатирован.
- Оступы - пробелами
- Размер отступа - 2 символа. Continuous indent - тоже два символа. В IntelliJ IDEA настройка отступов по схеме 2-2-2
- Расположение полей, методов, модификаторов в целом должно соответствовать рекомендациям Oracle - File organization, и SonarSource - Modifiers should be declared in the correct order
- Методы рекомендуется размещать в следующем порядке:
- public методы объекта
- protected/package private методы объекта
- private методы объекта
- public методы класса
- protected/package private методы класса
- private методы класса
Код BSL Language Server автоматически проверяется на соответствие стандартам кодирования на сервисе SonarCloud - ссылка на проект.
Список активированных правил и их настройки можно посмотреть в профиле качества 1c-syntax way.
В силу имеющихся ограничений безопасности пулл-реквесты не из репозитория 1c-syntax/bsl-language-server
не проверяются на соответствие стандартам. После принятия пулл-реквеста рекомендуется зайти на страницу проекта на SonarCloud и просмотреть список замечаний с фильтрацией по автору. Пулл-реквест с исправлением замечаний приветствуется.
Для улучшения качества кода и предварительной проверки на соответствие стандартам рекомендуется установить в Вашу IDE плагин SonarLint.
Для автоматического скачивания и параметризации правил в соответствиями с настройками на SonarCloud может потребоваться "биндинг" локального проекта к проекту SonarCloud. Если в Вашей IDE не получается найти соответствующий проект на SonarCloud, обратитесь к мэйнтейнерам проекта за добавлением Вас в список "Members" на SonarCloud.
Для логирования используется библиотека Slf4j
. Использование вывода в System.out
и System.err
допустимо только в исключительных случаях (например, в обработчиках cli-команд).
Для упрощения создания экземпляра логгера рекомендуется навешивать аннотацию @lombok.extern.slf4j.Slf4j
на объявление класса.
- Каждый новый класс обязан иметь javadoc-описание класса. Исключение - классы, реализующие интерфейсы
BSLDiagnostic
илиQuickFixSupplier
. - Каждый новый package обязан иметь
package-info.java
с javadoc-описанием пакета. - Каждый новый публичный метод в
utils
-пакете, классах-хелперах или классах, уже имеющих javadoc-описания, обязан иметь javadoc-описание метода.
- Подключение новых библиотек в implementation scope стоит производить аккуратно, с контролем увеличения размера итогового jar-файла. По возможности "лишние" и незадействованные суб-зависимости стоит исключать через
exclude
. - Явное подключение библиотеки
com.google.guava
,Google Collections
или прочих частей библиотек семейства Guava запрещено. В случае крайней необходимости допустимо копирование реализации изGuava
внутрь BSL Language Server с выполнением условий лицензии Guava. Для всего остального есть Apache Commons. - Прямой импорт классов
*.google.*
, а так же прочих частей библиотек Guava запрещено. Без исключений.
В процессе наполнения...