mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2026-02-05 03:32:18 +00:00
35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
|
|
# Правила именования и стиль кода
|
|||
|
|
|
|||
|
|
Мы придерживаемся рекомендаций **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).
|