feat: добавлена новый skill flutter_dev и документация (#46)

This commit is contained in:
Yuri Petrov
2026-01-27 09:31:01 +03:00
committed by GitHub
parent 2fc8f2c3ba
commit 971bafe191
8 changed files with 186 additions and 6 deletions

View File

@@ -0,0 +1,34 @@
# Правила именования и стиль кода
Мы придерживаемся рекомендаций **Effective Dart** и внутренних правил компании.
## Именование
### Интерфейсы
- Начинаются с заглавной буквы **I**.
- Пример: `IAuthRepository`, `IUserRepository`.
### Классы и файлы
- **Классы**: `UpperCamelCase`. Приватные — с префиксом `_`. Должны содержать тип в конце (например, `UserEntity`).
- **Файлы**: `snake_case`. Структура: `[раздел]_[тип].dart`. Пример: `user_details_screen.dart`.
### Репозитории
- Основная реализация — без постфикса (`AuthRepository`).
- Альтернативные реализации — с постфиксами: `Network`, `Local`, `Mock`.
### Виджеты
- **Экраны**: Постфикс `Screen` (`ShopListScreen`).
- **Контент экрана**: Постфикс `View` (`ShopListView`).
- **Глобальные виджеты**: Префикс `App` (`AppButton`).
- В названии **не должно** быть слова `widget`.
## Методы и переменные
- **Методы**: Начинаются с глагола (`fetch`, `put`, `update`, `delete`). Не должны содержать `And/Or`.
- **Переменные/Константы**: `lowerCamelCase`.
## Структура класса (порядок элементов)
1. Конструкторы (default, named, factory).
2. Static элементы (methods, const fields).
3. Инстанс-поля (final, потом обычные; public, потом private).
4. Геттеры/Сеттеры.
5. Методы (overridden, public, protected, private).

View File

@@ -0,0 +1,29 @@
# Документирование кода
## Документация (///)
- Оформляется с использованием `///` над объектом.
- Обязательна для всех классов, конструкторов, полей, методов и фабрик.
- Должна быть краткой, емкой и указывать на назначение.
### Шаблоны
- **Классы**: Используйте `{@template name}` и `{@endtemplate}`.
- **Конструкторы**: Если один — `{@macro name}`.
- **Параметры**: Используйте ссылки в квадратных скобках `[paramName]`.
### Пример метода
```dart
/// Метод для расчета температуры.
/// Принимает:
/// - [grad] - параметр для расчета.
/// Возвращает температуру в градусах. Null при ошибке.
int? calcTemperature({required int grad}) { ... }
```
## Комментарии (//)
- Используются только там, где код не очевиден.
- Не должны повторять то, что и так понятно из имен переменных или структуры.
## TODO
- Формат определяется линтером.
- Указывать имя разработчика в контексте.
- Указывать ссылку на задачу в скобках, если она известна.

View File

@@ -0,0 +1,26 @@
# Работа с Git и ветками
## Pull Requests
- Язык описания — **Русский**.
- Описание должно содержать суть изменений, ссылку на задачу и список deprecated-кода.
## Коммиты (Conventional Commits)
Типы:
- `feat`: Новая функциональность.
- `fix`: Исправление ошибок.
- `refactor`: Рефакторинг без смены логики.
- `docs`: Документация.
- `chore`: Инструменты, зависимости (`pubspec.yaml`).
- `test`, `build`, `ci`.
## Именование веток
Формат: `тип/PRIME-номер_описание`
- `feat/PRIME-123_auth`
- `fix/PRIME-456_typo`
## Процесс Feature-разработки
1. Создаем ветку от `main`.
2. Вносим изменения, делаем коммиты.
3. PR с названием по правилам (например, `feat(auth): PRIME-17 Добавить вход`).
4. После Review — **squash commit** в `main`.
5. Удаление ветки.

View File

@@ -0,0 +1,26 @@
# Стандарты проекта
## Управление файлами
### Сгенерированные файлы (*.g.dart, *.freezed.dart)
- **Хранить в репозитории**.
- Это обеспечивает работоспособность `main` ветки сразу после чекаута без долгого ожидания генерации.
- Нужно контролировать конфликты при слиянии и периодически актуализировать.
### pubspec.lock
- **Хранить** для приложений (applications).
- **Не хранить** для пакетов (packages).
- По умолчанию хранить GMS версию как базовую.
## Сборка и запуск
- Используйте анализатор `friflex_lint_rules`.
- Перед созданием PR обязательно:
1. Форматирование кода (`dart format`).
2. Проверка анализатором на отсутствие ошибок.
## Технологический стек
- Роутинг: `go_router`.
- State Manager: `flutter_bloc`.
- DI: Ручная реализация через `InheritedWidget`.
- API: `dio`.
- Ресурсы: `flutter_gen`.

View File

@@ -0,0 +1,33 @@
# Структура проекта
Проект строится на основе фич и слоев.
## Общая иерархия
- `/assets` — графические ресурсы.
- `/lib` — основной код.
- `/app` — глобальные настройки, интерфейсы и реализации.
- `/di` — конфигурация зависимостей.
- `/routing` — описание путей.
- `/features` — функциональные модули приложения.
- `/gen` — сгенерированный код.
## Структура Feature-папки
Каждая фича делится на три слоя:
1. **Data** (Поставщик данных):
- `/dto` — модели данных для API.
- `/repository` — реализация интерфейсов репозиториев.
2. **Domain** (Бизнес-логика):
- `/entity` — чистые модели для использования в UI.
- `/repository`**интерфейсы** репозиториев.
- `/state` — управление состоянием (BLoC).
- `/service` — реализации бизнес-сервисов.
3. **Presentation** (Представление):
- `/screens` — виджеты экранов (`*Screen`).
- `/components` — переиспользуемые компоненты внутри фичи.
## Правила взаимодействия
- **Data** → доступ к **Entity** (для маппинга), не знает про UI.
- **Domain** → не знает про **Data** (работает через интерфейсы) и **Presentation**.
- **Presentation** → работает через **Domain**, не знает про **Data**.
- Объекты внутри фичи инкапсулированы. Глобальные объекты выносятся в `/app`.