docs(naming): переработать раздел именования
- переименовал 'Архитектурный неймспейс' в 'Именование файлов' - убрал суффиксы master component'ов (перенесены в архитектуру) - добавил правило именования хуков: use-name.hook.ts / useName - обновил примеры хорошо/плохо - обновил вводное описание раздела
This commit is contained in:
@@ -4,7 +4,7 @@ title: Именование
|
|||||||
|
|
||||||
# Именование
|
# Именование
|
||||||
|
|
||||||
Именование должно быть предсказуемым, коротким и отражать смысл сущности.
|
Этот раздел описывает соглашения об именовании в проекте. Единые правила делают код предсказуемым и упрощают навигацию по проекту.
|
||||||
|
|
||||||
## Базовые правила
|
## Базовые правила
|
||||||
|
|
||||||
@@ -20,80 +20,60 @@ title: Именование
|
|||||||
| CSS классы | `camelCase` |
|
| CSS классы | `camelCase` |
|
||||||
|
|
||||||
|
|
||||||
## Архитектурный неймспейс
|
## Именование файлов
|
||||||
|
|
||||||
Соглашение о суффиксах, которые обозначают слой (уровень абстракции), роль или тип файла.
|
Суффикс обозначает роль или тип файла. Пишется в единственном числе.
|
||||||
|
Формат: `name.<suffix>.ts`.
|
||||||
|
|
||||||
- Суффиксы используются для обозначения слоя, роли или типа файла.
|
**Хуки**
|
||||||
- Суффиксы всегда пишутся в единственном числе.
|
- `use-name.hook.ts` — файл хука, функция именуется `useName`
|
||||||
- Формат имени: `name.<suffix>.ts` или `name.<suffix>.tsx`.
|
|
||||||
|
|
||||||
**UI и слои FSD**
|
**Логика**
|
||||||
- `.screen.tsx` — экран
|
|
||||||
- `.layout.tsx` — layout
|
|
||||||
- `.widget.tsx` — виджет
|
|
||||||
- `.feature.tsx` — UI фичи
|
|
||||||
- `.entity.tsx` — UI сущности
|
|
||||||
|
|
||||||
Остальные `.tsx` файлы (компоненты в `shared/ui/`, дочерние компоненты в `ui/`) не помечаются суффиксами — расширение `.tsx` само по себе означает UI‑компонент.
|
|
||||||
|
|
||||||
**Логика и модель**
|
|
||||||
- `.store.ts` — стор
|
- `.store.ts` — стор
|
||||||
- `.service.ts` — сервис
|
- `.service.ts` — сервис
|
||||||
|
|
||||||
**Типы и контракты**
|
**Типы и контракты**
|
||||||
- `.type.ts` — типы и интерфейсы
|
- `.type.ts` — типы и интерфейсы
|
||||||
- `.interface.ts` — файл с интерфейсами (если нужен отдельный контракт)
|
- `.interface.ts` — интерфейсы
|
||||||
- `.enum.ts` — enum
|
- `.enum.ts` — enum
|
||||||
- `.dto.ts` — внешние DTO
|
- `.dto.ts` — внешние DTO
|
||||||
- `.schema.ts` — схемы валидации
|
- `.schema.ts` — схемы валидации
|
||||||
- `.constant.ts` — константы
|
- `.constant.ts` — константы
|
||||||
- `.config.ts` — конфигурация
|
- `.config.ts` — конфигурация
|
||||||
|
|
||||||
**Утилиты и хелперы**
|
**Утилиты**
|
||||||
- `.util.ts` — утилиты
|
- `.util.ts` — утилиты
|
||||||
- `.helper.ts` — вспомогательные функции
|
- `.helper.ts` — вспомогательные функции
|
||||||
- `.lib.ts` — вспомогательные функции
|
- `.lib.ts` — библиотечный код
|
||||||
|
|
||||||
**Тесты**
|
**Тесты**
|
||||||
- `.test.ts` / `.test.tsx`
|
- `.test.ts` — тесты
|
||||||
- `.mock.ts`
|
- `.mock.ts` — моки
|
||||||
|
|
||||||
|
|
||||||
**Хорошо**
|
**Хорошо**
|
||||||
```text
|
```text
|
||||||
src/
|
features/
|
||||||
├── screens/
|
└── auth-by-email/
|
||||||
│ └── main/
|
├── ui/
|
||||||
│ ├── main.screen.tsx
|
│ └── login-form.tsx
|
||||||
│ └── index.ts
|
├── hooks/
|
||||||
├── features/
|
│ └── use-auth.hook.ts
|
||||||
│ └── auth-by-email/
|
├── stores/
|
||||||
│ ├── ui/
|
│ └── auth.store.ts
|
||||||
│ │ └── login-form.tsx
|
|
||||||
│ ├── auth-by-email.feature.tsx
|
|
||||||
│ └── index.ts
|
|
||||||
└── shared/
|
|
||||||
└── ui/
|
|
||||||
└── icon/
|
|
||||||
├── styles/
|
|
||||||
│ └── icon.module.css
|
|
||||||
├── types/
|
├── types/
|
||||||
│ └── icon.interface.ts
|
│ └── auth.interface.ts
|
||||||
├── icon.tsx
|
├── auth-by-email.feature.tsx
|
||||||
└── index.ts
|
└── index.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
**Плохо**
|
**Плохо**
|
||||||
```text
|
```text
|
||||||
// Плохо: нет единых правил для слоёв и публичных файлов.
|
features/
|
||||||
src/
|
└── authByEmail/
|
||||||
├── screens/
|
├── LoginForm.tsx
|
||||||
│ └── Main/
|
├── useAuth.ts
|
||||||
│ └── Main.tsx
|
├── authStore.ts
|
||||||
└── features/
|
└── index.ts
|
||||||
└── authByEmail/
|
|
||||||
└── login-form.tsx
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Булевы значения
|
## Булевы значения
|
||||||
|
|||||||
Reference in New Issue
Block a user