diff --git a/docs/ru/basics/naming.md b/docs/ru/basics/naming.md index 96f9962..31fa5f0 100644 --- a/docs/ru/basics/naming.md +++ b/docs/ru/basics/naming.md @@ -4,7 +4,7 @@ title: Именование # Именование -Именование должно быть предсказуемым, коротким и отражать смысл сущности. +Этот раздел описывает соглашения об именовании в проекте. Единые правила делают код предсказуемым и упрощают навигацию по проекту. ## Базовые правила @@ -20,80 +20,60 @@ title: Именование | CSS классы | `camelCase` | -## Архитектурный неймспейс +## Именование файлов -Соглашение о суффиксах, которые обозначают слой (уровень абстракции), роль или тип файла. +Суффикс обозначает роль или тип файла. Пишется в единственном числе. +Формат: `name..ts`. -- Суффиксы используются для обозначения слоя, роли или типа файла. -- Суффиксы всегда пишутся в единственном числе. -- Формат имени: `name..ts` или `name..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 - ├── types/ - │ └── icon.interface.ts - ├── icon.tsx - └── index.ts +features/ +└── auth-by-email/ + ├── ui/ + │ └── login-form.tsx + ├── hooks/ + │ └── use-auth.hook.ts + ├── stores/ + │ └── auth.store.ts + ├── types/ + │ └── 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 ``` ## Булевы значения