Перейти к основному содержимому

Синтаксис и пунктуация в Dart

Разработчику Архитектору

Названия знаков по-английски и по-русски: Знаки препинания и символы в IT.

О чём эта статья

Dart выглядит как Java или C#, но есть свои привычки: точка с запятой в конце строки не обязательна, строки в "...", многострочные литералы ''' ... ''', стрелка => для коротких функций и trailing comma в списках аргументов (удобно в Flutter). Здесь — знаки препинания и мелкие правила, из‑за которых чаще всего "не компилируется".

Дальше: типы и null safetyуправление.


Общие принципы

  • Блоки кода — в фигурных скобках { }.
  • Имена: lowerCamelCase для переменных и методов, UpperCamelCase для типов.
  • Файлы: snake_case.dart.
  • Официальный стиль — Effective Dart; в проекте часто подключают dart format и анализатор dart analyze.

Кавычки и строки

Двойные кавычки "

Основной способ задать String. Интерполяция: "Привет, $name" или "Сумма: ${a + b}".

final name = 'Dart';
print("Hello, $name");

Разбор:

  • final фиксирует ссылку на значение: name нельзя переназначить на другую строку.
  • $name внутри двойных кавычек — интерполяция, подстановка значения переменной в текст.
  • print(...) выводит готовую строку в консоль, что удобно для простых проверок в CLI.

Одинарные кавычки '

Тоже строка; удобно, когда внутри много ":

print('Он сказал: "привет"');

Разбор:

  • Внешние одинарные кавычки позволяют использовать двойные внутри без экранирования.
  • Этот стиль уменьшает визуальный шум и делает строку легче для чтения.
  • Подход полезен в текстах с цитатами или JSON-фрагментами.

Тройные кавычки ''' / """

Многострочный текст без \n:

final text = '''
Строка 1
Строка 2
''';

Разбор:

  • Тройные кавычки создают многострочный литерал String в "нативном" виде.
  • Переносы строк сохраняются автоматически, без ручного добавления \n.
  • Такие строки удобны для шаблонов сообщений, SQL, markdown и тестовых данных.

Raw-строки r"..."

Обратный слэш не экранирует: r"C:\Users\name".


Точка с запятой

В Dart 3 ; в конце строки опциональна, если парсер однозначно понимает границу оператора. В команде обычно всё равно придерживаются одного стиля в файле — dart format расставит согласованно.

void main() {
print('ok') // без ; — допустимо
}

Разбор:

  • main() — стартовая функция, с которой начинается выполнение программы.
  • Пример демонстрирует, что в этом контексте Dart допускает отсутствие ;.
  • На практике единый стиль обычно обеспечивает dart format, чтобы код в проекте выглядел одинаково.

Фигурные скобки и тело функции

int add(int a, int b) {
return a + b;
}

// Одно выражение — стрелка =>
int double(int x) => x * 2;

Разбор:

  • add использует классическую форму функции: блок {} и явный return.
  • Типы int у параметров и результата задают строгий контракт функции.
  • double в примере — имя функции; она возвращает int.
  • Стрелочная запись => сокращает код для функций из одного выражения.

У классов методы и поля тоже в { }; улучшенные enum и switch expression используют те же скобки — см. паттерны Dart 3.


Запятая в конце (trailing comma)

После последнего аргумента или элемента списка запятую можно оставить — форматтер разнесёт аргументы по строкам (важно для виджетов Flutter):

Widget build(BuildContext context) {
return Column(
children: [
Text('A'),
Text('B'),
], // trailing comma
);
}

Разбор:

  • build(BuildContext context) — стандартный метод Flutter, возвращающий описание UI.
  • Column строит вертикальный контейнер, а children хранит дочерние виджеты.
  • Элементы Text('A') и Text('B') показывают простой список текстовых узлов.
  • Trailing comma после последнего элемента помогает форматтеру и делает git-diff чище при добавлении новых строк.

Комментарии

// однострочный

/* блочный
на несколько строк */

/// документация к классу или функции (для dart doc)

Разбор:

  • // подходит для коротких локальных комментариев.
  • /* ... */ используют для многострочных пояснений внутри кода.
  • /// — формат документации API, который читается инструментом dart doc.
  • Для публичных классов и методов именно /// помогает поддерживать качественную встроенную документацию.

Операторы, которые часто путают

ОператорНазначение
??Значение по умолчанию, если слева null
??=Присвоить, только если переменная null
?.Вызов только если не null
!Утверждение "здесь точно не null" (осторожно)
~/Целочисленное деление
..Каскад: несколько вызовов к одному объекту

Подробнее о null safety — в типах.


Импорт и библиотеки


import 'dart:io'; // SDK
import 'package:http/http.dart' as http; // из pubspec

Разбор:

  • dart:io — стандартная библиотека для файловой системы, сети и процессов.
  • package:http/http.dart — внешний пакет, подключаемый через pubspec.yaml.
  • as http создаёт префикс и делает вызовы явными (http.get(...)), что снижает риск конфликтов имён.
  • Разделение импортов в отдельном блоке упрощает навигацию и поддержку файла.

Точка входа пакета — lib/, исполняемый консольный код — часто bin/ (первая программа).


Что запомнить

  1. Строки — " или ', интерполяция — $ и ${}.
  2. => — короткая функция; { } — полное тело.
  3. Null-aware операторы — основа безопасного Dart 3.
  4. Стиль выравнивает dart format — не спорьте с ним вручную по каждой запятой.

Следующий шаг: типы данных и null safety.