← Назад к вопросам

Когда лучше использовать var?

1.6 Junior🔥 151 комментариев
#Dart

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Применение ключевого слова var в Dart

var — это ключевое слово для объявления переменных, тип которых автоматически определяется компилятором на основе присваиваемого значения. Это часть системы типов Dart и играет важную роль в написании чистого, читаемого кода.

Когда использовать var

1. Когда тип очевиден из контекста

var name = "Иван";  // ясно, что String
var age = 25;        // ясно, что int
var isActive = true; // ясно, что bool

Вместо явного указания типа:

String name = "Иван";
int age = 25;
bool isActive = true;

Оба варианта работают, но var делает код менее многословным.

2. В циклах и итерациях

var items = [1, 2, 3, 4, 5];
for (var item in items) {
  print(item); // тип item автоматически List<int>
}

map.forEach((var key, var value) {
  // ключи и значения определяются из типа map
});

3. При работе с фабриками и конструкторами

var user = User.fromJson({"name": "Петр"});
var widget = MyStatefulWidget();

Тип user и widget понятен из контекста, указывать его излишне.

4. В локальных переменных цикловых/временных значений

var temp = list.firstWhere((item) => item.id == targetId);
var filtered = items.where((i) => i.active).toList();

Когда НЕ использовать var

1. В сигнатурах функций и методов

// ❌ Плохо
var getUserName() { ... }

// ✅ Хорошо
String getUserName() { ... }

Внешним пользователям функции нужно знать возвращаемый тип для правильного использования API.

2. В свойствах классов

// ❌ Плохо
class User {
  var name;
  var age;
}

// ✅ Хорошо
class User {
  String name;
  int age;
}

Свойства класса — часть его контракта, должны быть явно типизированы.

3. Когда тип неочевиден

// ❌ Непонятно
var result = calculate(input);

// ✅ Ясно
int result = calculate(input);

Если функция возвращает сложный или неочевидный тип, явная типизация помогает читать код.

4. В параметрах функций и методов

// ❌ Плохо
vooid processData(var input) { ... }

// ✅ Хорошо
void processData(String input) { ... }

Best Practice

  • Используй var для локальных переменных, где тип очевиден
  • Используй явный тип для публичных API (параметры, возвращаемые значения, свойства)
  • Баланс читаемости — выбирай то, что делает код понятнее другим разработчикам
  • Анализ кода — включи анализатор Dart (analysis_options.yaml) с правилами типизации

Этот подход скорочит код, не жертвуя типобезопасностью и читаемостью.

Когда лучше использовать var? | PrepBro