Руководство по стилю кода¶
Обзор¶
Этот документ определяет стандарты кодирования и руководящие принципы стиля для проекта CulicidaeLab Flutter. Последовательный стиль кода улучшает читаемость, поддерживаемость и сотрудничество между членами команды.
Общие принципы¶
Стандарты качества кода¶
- Читаемость прежде всего: Код должен быть самодокументируемым и легким для понимания
- Последовательность: Следуйте установленным паттернам во всей кодовой базе
- Простота: Предпочитайте простые, ясные решения сложным
- Производительность: Пишите эффективный код без преждевременной оптимизации
- Тестируемость: Проектируйте код для легкого тестирования
Принципы SOLID¶
- Единственная ответственность: Каждый класс должен иметь одну причину для изменения
- Открыт/Закрыт: Открыт для расширения, закрыт для модификации
- Подстановка Лисков: Подтипы должны быть заменяемыми для их базовых типов
- Разделение интерфейсов: Зависьте от абстракций, а не от конкретных реализаций
- Инверсия зависимостей: Высокоуровневые модули не должны зависеть от низкоуровневых модулей
Руководящие принципы языка Dart¶
Объявления переменных¶
Предпочитайте final и const¶
// Хорошо: Используйте final для констант времени выполнения
final String userName = getCurrentUser().name;
final List<String> items = ['item1', 'item2'];
// Хорошо: Используйте const для констант времени компиляции
const String apiUrl = 'https://api.culicidaelab.org';
const Duration timeout = Duration(seconds: 30);
// Избегайте: Ненужная изменяемость
String userName = getCurrentUser().name; // Не изменится
Аннотации типов¶
// Хорошо: Явные типы для публичных API
String getUserName() {
return _currentUser.name;
}
// Хорошо: Выведенные типы для локальных переменных
final items = <String>['item1', 'item2'];
final user = await userService.getCurrentUser();
// Избегайте: Избыточные аннотации типов
String userName = String('John'); // Тип очевиден