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` |
|
||||
|
||||
|
||||
## Архитектурный неймспейс
|
||||
## Именование файлов
|
||||
|
||||
Соглашение о суффиксах, которые обозначают слой (уровень абстракции), роль или тип файла.
|
||||
Суффикс обозначает роль или тип файла. Пишется в единственном числе.
|
||||
Формат: `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/
|
||||
features/
|
||||
└── authByEmail/
|
||||
└── login-form.tsx
|
||||
├── LoginForm.tsx
|
||||
├── useAuth.ts
|
||||
├── authStore.ts
|
||||
└── index.ts
|
||||
```
|
||||
|
||||
## Булевы значения
|
||||
|
||||
Reference in New Issue
Block a user