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` |
## Архитектурный неймспейс
## Именование файлов
Соглашение о суффиксах, которые обозначают слой (уровень абстракции), роль или тип файла.
Суффикс обозначает роль или тип файла. Пишется в единственном числе.
Формат: `name.<suffix>.ts`.
- Суффиксы используются для обозначения слоя, роли или типа файла.
- Суффиксы всегда пишутся в единственном числе.
- Формат имени: `name.<suffix>.ts` или `name.<suffix>.tsx`.
**Хуки**
- `use-name.hook.ts` — файл хука, функция именуется `useName`
**UI и слои FSD**
- `.screen.tsx` — экран
- `.layout.tsx` — layout
- `.widget.tsx` — виджет
- `.feature.tsx` — UI фичи
- `.entity.tsx` — UI сущности
Остальные `.tsx` файлы (компоненты в `shared/ui/`, дочерние компоненты в `ui/`) не помечаются суффиксами — расширение `.tsx` само по себе означает UIкомпонент.
**Логика и модель**
**Логика**
- `.store.ts` — стор
- `.service.ts` — сервис
**Типы и контракты**
- `.type.ts` — типы и интерфейсы
- `.interface.ts` файл с интерфейсами (если нужен отдельный контракт)
- `.interface.ts` — интерфейсы
- `.enum.ts` — enum
- `.dto.ts` — внешние DTO
- `.schema.ts` — схемы валидации
- `.constant.ts` — константы
- `.config.ts` — конфигурация
**Утилиты и хелперы**
**Утилиты**
- `.util.ts` — утилиты
- `.helper.ts` — вспомогательные функции
- `.lib.ts`вспомогательные функции
- `.lib.ts`библиотечный код
**Тесты**
- `.test.ts` / `.test.tsx`
- `.mock.ts`
- `.test.ts` — тесты
- `.mock.ts` — моки
**Хорошо**
```text
src/
── screens/
── main/
── main.screen.tsx
── index.ts
├── features/
── auth-by-email/
── ui/
│ │ └── login-form.tsx
│ ├── auth-by-email.feature.tsx
│ └── index.ts
└── shared/
└── ui/
└── icon/
├── styles/
│ └── icon.module.css
features/
── auth-by-email/
── ui/
── login-form.tsx
── hooks/
│ └── use-auth.hook.ts
── stores/
── auth.store.ts
├── types/
│ └── icon.interface.ts
├── icon.tsx
│ └── auth.interface.ts
├── auth-by-email.feature.tsx
└── index.ts
```
**Плохо**
```text
// Плохо: нет единых правил для слоёв и публичных файлов.
src/
├── screens/
── Main/
── Main.tsx
└── features/
└── authByEmail/
└── login-form.tsx
features/
└── authByEmail/
├── LoginForm.tsx
── useAuth.ts
── authStore.ts
└── index.ts
```
## Булевы значения