Правила форматирования структур данных
§8 Литералы
§8.1 Целочисленные литералы. Целочисленные литералы выводятся напрямую.
// ✅ Правильно
let x = 42;§8.2 Литералы с плавающей точкой. Литералы с плавающей точкой должны содержать десятичную точку.
// ✅ Правильно
let x = 3.14;
let y = 42.0; // требуется десятичная точка
// ❌ Неправильно
let y = 42; // целое число, а не число с плавающей точкой§8.3 Строковые литералы. По умолчанию используются двойные кавычки. Если single_quote = true, используются одинарные кавычки.
// По умолчанию (двойные кавычки)
let s = "hello";
// single_quote = true
let s = 'hello';§8.4 Логические литералы. Логические литералы записываются в нижнем регистре.
// ✅ Правильно
let x = true;
let y = false;
// ❌ Неправильно
let x = True;
let y = FALSE;§10 Списки и словари
§10.1 Формат списков. Списки заключаются в [], элементы разделяются запятыми.
// ✅ Правильно
let x = [1, 2, 3];
// ❌ Неправильно
let x = [1,2,3];§10.2 Формат словарей. Словари заключаются в {}, пары ключ-значение записываются в формате key: value.
// ✅ Правильно
let x = {"a": 1, "b": 2};
// ❌ Неправильно
let x = {"a":1, "b":2};§10.3 Генераторы списков. Генераторы списков используют формат [expr for var in iterable].
// ✅ Правильно
let x = [i * 2 for i in range(10)];
// С условием
let x = [i for i in range(10) if i > 5];§11 Выражения Match
§11.1 Формат Match. Между ключевым словом match и выражением ставится пробел.
// ✅ Правильно
match x { ... }
// ❌ Неправильно
match(x) { ... }§11.2 Выравнивание шаблонов. Несколько шаблонов должны быть выровнены с помощью пробелов.
// ✅ Выровнено
match x {
1 => "one",
2 => "two",
100 => "hundred",
_ => "other",
}§11.3 Перенос длинных шаблонов. Если шаблон слишком длинный, он переносится на новую строку, а => выравнивается относительно тела.
// ✅ С переносом
match x {
VeryLongPatternName { field1, field2 }
=> handle_case(field1, field2),
_ => default_case(),
}§11.4 Кортежи
§11.4.1 Формат кортежей. Кортежи заключаются в (), элементы разделяются запятыми.
// ✅ Правильно
let t = (1, "hello", true);
let t = (1,); // одноэлементный кортеж
// ❌ Неправильно
let t = (1, "hello", true); // отсутствует пробел после запятой
let t = (1,"hello",true); // отсутствует пробел после запятой§11.4.2 Пустой кортеж. Пустой кортеж обозначается как ().
// ✅ Правильно
let t = ();§11.5 Доступ по индексу
§11.5.1 Формат индексации. Индексация использует формат expr[index].
// ✅ Правильно
let x = arr[0];
let y = matrix[i][j];
// ❌ Неправильно
let x = arr [0]; // лишний пробел
let y = matrix[ i ][ j ]; // лишний пробел§11.6 Доступ к полям
§11.6.1 Формат доступа к полям. Доступ к полям использует формат expr.field.
// ✅ Правильно
let x = obj.field;
let y = obj.method();
// ❌ Неправильно
let x = obj . field; // лишний пробел
let y = obj. field; // лишний пробел§11.6.2 Цепочечный доступ к полям. Если цепочка вызовов методов превышает ширину строки, каждый вызов метода размещается на отдельной строке.
// При превышении ширины строки
let result = object.method1().method2().method3().method4();
// После форматирования
let result = object
.method1()
.method2()
.method3()
.method4();