# Правила именования и стиль кода Мы придерживаемся рекомендаций **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).