evo-frontend-docs

Typescript & Angular

Предисловие

Кодстайл фронтенда Эвотора ориентируется в первую очередь на официальный кодстайл Angular, поэтому настоятельно рекомендуем внимательно ознакомиться с этим документом.

Также рекомендуется ознакомиться с кратким списком Do’s and Don’ts от Typescript.

Ниже описаны ключевые моменты и особенности, которые не покрыты (или упомянуты вскользь) в основном кодстайле Angular.

Базовые определения

Сущности

Под сущностью в данном руководстве подразумевается:

Префиксы и суффиксы

Основные правила именования сущностей

Соблюдаем регистр

Регистр Использование
kebab-case или dashed-case названия файлов / селектор компонента
PascalCase или UpperCamelCase классы / интерфейсы / типы / enum / декораторы / параметры типов
lowerCamelCase или просто camelCase локальные переменные / параметры функций / функции / методы / свойства / селектор директивы
UPPER_SNAKE_CASE или SCREAMING_SNAKE_CASE глобальные константы
lower_snake_case или просто snake_case не используется в TypeScript

Аббревиатуры

Аббревиатуры в названиях сущностей НУЖНО рассматривать как целые слова (акронимы), поэтому не следует выделять их в названиях сущностей заглавными буквами (кроме случаев, когда это требуется внешним API):

Поэтому корректно писать

Ошибки в написании слов

Булевы переменные и методы

Хорошая статья на эту тему.

Знак $

Префикс _

Псевдонимы сущностей в классе

Названия интерфейсов

Замечание: при создании интерфейса СЛЕДУЕТ подумать, для чего этот интерфейс вообще создаётся, и эту особенность нужно отразить в названии. При этом необходимо помнить про принцип разделения интерфейсов (ISP) — он поможет избежать перегруженных интерфейсов, которые не несут ничего, кроме отчаяния.

Интерфейсы и контракты API

Для работы с API СЛЕДУЕТ использовать суффиксы Response / Request:

Возвратный тип метода или функции

Сущности, файлы и папки

1.1. Принцип единой ответственности (SRP)

1.2. Контроль количества кода

1.4. Шаблон названия файла

1.5. Шаблон названия папки

1.6. Строгое соответствие содержимого файла и его названия

1.7. Распределение файлов по папкам

1.8. Соответствие содержимого файла и его названия

Пример плохого соответствия

filename: product-type.enum.ts
export enum AppProductType {
}

Проблемы:

2. Классы, интерфейсы, типы

2.1. Модификаторы доступа

2.2. Модификатор readonly

3. Сущности Angular

3.1. Компоненты страниц

Компоненты, реализующие шаблон-контейнер раздела приложения.

Ключевые особенности

Оформление

Пример структуры:

- pages
  - home-page
    - home-page.component.ts
    - home-page.component.html
    - home-page.component.scss

4. Операторы и операции сравнения и присваивания

4.1. Вычисления по короткой схеме

4.2. !! (двойное отрицание)

4.3. || (логическое ИЛИ)

4.3. ?? (нулевое слияние)

4.4. Побитовые операторы

4.5. Унарный +

4.6. Тернарный оператор ? :