Skip to content

Latest commit

 

History

History
66 lines (55 loc) · 3.8 KB

codestyle.md

File metadata and controls

66 lines (55 loc) · 3.8 KB

Общие рекомендации к коду проекта

Про код

  • Используем black style

  • Длина строки — 119 символов;

  • Для сортировки импортов используем пакет isort, следим чтобы не было неиспользуемых;

  • Отступы — 4 пробела;

  • Консистентность: одинаковые кавычки, одинаковые методы решения одинаковых проблем;

  • Комментарии к функциям оформлены в виде Docstrings в соответствии с Docstring Conventions: начинаются с большой буквы, заканчиваются точкой и содержат описание того, что делает функция;

  • Логические блоки кода выделены пустыми строками;

  • Используется Guard Block;

  • Следим, чтобы в репозиторий не попадали системные и временные файлы (pycache, .vscode, и т.д.);

  • Где возможно используем кортежи вместо списков (обзор различий)

Вместо такого:

filters = ["test"]

Делаем так:

filters = ("test",)
  • f-строки предпочтительнее остальных способов форматирования строк

Так плохо:

def ugly_one(self):
    return "{smth} - {here}".format({"smth": self.smth, "here": self.here})

Так хорошо:

def nice_one(self):
    return f"{self.smth} - {self.here}"
  • В f-строках только подстановка переменных

Так плохо:

f"some_result: {UsingSomeClass.and_ofcourse_method('with', a, self.bunch, of, USEFUL_PARAMS)}"

Так хорошо:

# делаем полезное и понятное
some_result = ...
f"some_result: {some_result}"
  • Переменные названы в соответствии с их смыслом, по-английски, нет однобуквенных названий и транслита;
  • Используем Type Hints;

Про Django

  • В urls.py в конце роутов стоит слеш /;
  • Для URL применяются соответствующие path converters;
  • Для всех ссылок используется reverse();
  • Отсутствие закомментированного кода и стандартных комментариев Django (# Create your views here. и другие);
  • Отсутствие любых пустых файлов *.py в модулях Django (urls.py, views.py и других);
  • Соблюдается официальный код-стайл Django (Если он не противоречит PEP8, настройкам линтеров и форматеров кода);

Про тесты

  • Все ключевые участки кода покрыты тестами: каждый ответ каждого эндпоинта API и важная бизнес-логика;
  • У тестов есть понятное описание, что именно проверяется внутри. Используйте pep257.