docs(naming): переработать раздел именования

- переименовал 'Архитектурный неймспейс' в 'Именование файлов'
- убрал суффиксы master component'ов (перенесены в архитектуру)
- добавил правило именования хуков: use-name.hook.ts / useName
- обновил примеры хорошо/плохо
- обновил вводное описание раздела
This commit is contained in:
2026-03-31 15:17:54 +03:00
parent e337ec78fa
commit 909ce71931

View File

@@ -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 ├── types/
── auth-by-email.feature.tsx ── auth.interface.ts
── index.ts ── auth-by-email.feature.tsx
└── shared/ └── index.ts
└── ui/
└── icon/
├── styles/
│ └── icon.module.css
├── types/
│ └── icon.interface.ts
├── icon.tsx
└── index.ts
``` ```
**Плохо** **Плохо**
```text ```text
// Плохо: нет единых правил для слоёв и публичных файлов. features/
src/ └── authByEmail/
├── screens/ ├── LoginForm.tsx
── Main/ ── useAuth.ts
── Main.tsx ── authStore.ts
└── features/ └── index.ts
└── authByEmail/
└── login-form.tsx
``` ```
## Булевы значения ## Булевы значения