Правила форматирования структур данных
§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 Выравнивание Pattern. Несколько pattern должны быть выровнены с использованием пробелов для заполнения.
// ✅ Выровнено
match x {
1 => "one",
2 => "two",
100 => "hundred",
_ => "other",
}§11.3 Перенос длинных Pattern. Когда pattern слишком длинный, pattern переносится, а => выравнивается с body.
// ✅ Перенос
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();