Типичные улучшения

Для поиска по тегу начните название тега с символа '@'.

Улучшения, показаны 50 из 132.

Свяжите числа с кодом

Если мы изменим числовую константу в коде, то наверняка заденем циклы, условия и значения других …

Обновите комментарии в коде

Комментарии в коде - тоже часть кода. За ними нужно следить, их нужно поддерживать в …

Вместо кодов статуса используйте response.ok

В HTTP любой статус ответа, начинающийся с цифры 2 считается успешным: 200, 201, 202. Чтобы …

Используйте enumerate для нумерации списков

Для нумерации списков в Python есть встроенная функция enumerate. Она избавляет от рутины в работе …

Повысьте надежность операций с файлами

Каждый вызов `open(…)`, требует своего `close()`. Такого мнения придерживается операционная система. Она выделяет ресурсы при …

Спрячьте избыточные индексы

Избыточные индексы — это номера первого и последнего символа в строке. Они избыточны, потому что …

Добавьте поддержку http[s]

Ссылка может начинаться с `http://` или с `https://`, если сайт поддерживает защищенное соединение. Пользователь ожидает, …

Соблюдайте запрет на табы

В сообществе программистов Python запрещено использовать символы табуляции в качестве отступа перед блоком кода. Стандарт …

Вычислите булево значение без if

Результат любого сравнения: `==`, `<`, `>`, `is` — это всегда True или False. Воспользуйтесь этим, …

Избавьтесь от точки с запятой

В Python можно ставить символ `;` в конце строки, но в этом нет необходимости. Ставить …

Избавьтесь от лишних классов

Использование классов в коде усложняет программу. Создатели библиотек знают об этом, поэтому пишут подробную документацию …

Проверьте HTTP статус ответа

Интернет так устроен, что даже если сайт не может обработать запрос, он всё равно обязан …

Оптимизируйте декодирование JSON

Превращение JSON строки в структуру данных Python требует много процессорного времени. Этот ресурс не безграничен, …

Укажите все аргументы функции

Функция может получать настройки из нескольких источников: из полученных аргументов и из глобальных констант и …

Упростите доступ к данным

Добраться до нужного фрагмента во вложенной структуре данных бывает не просто: ```python json_data['new_attempts'][0]['lesson_title'] ``` Таких …

Не пропускайте уведомлений

Если преподаватель проверит две работы с минимальной задержкой в полсекунды, то о первой вам сразу …

Исправьте ошибку при быстром движении корабля

Если скорость корабля будет высокой и за один такт он преодолеет больше одной клетки, то …

Не путайте JSON и полученные оттуда данные

JSON — это текстовый формат данных, в Python он представляется в виде строки. Результат декодирования …

Перенесите canvas.nodelay в код инициализации

```python canvas.nodelay(True) ``` Этот код поменяет настройки canvas для всей программы разом и сломает остальной …

Структурируйте скрипт

Общая структура программы такова: 1. Импорты 2. Глобальные константы 3. Объявления функций 4. Объявление `def …

Разбейте код по логическим блокам

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

Уберите числа из названий

Когда какое-то значение не меняется, хочется записать его в имя. Например, если вам всегда надо …

Вынесите конфиг из кода

На то есть сразу несколько причин. Во-первых, пользователи не хотят лезть в код. А во-вторых, …

Используйте UPPER_CASE для переменных окружения

Так исторически сложилось, что переменные окружения принято называть в верхнем регистре с символом подчеркивания: не …

Дайте токену специфичное название

Со временем в дополнение к одному API может понадобиться подключение еще нескольких. У них каждого …

Введите свой тип исключений

Если программа сообщает о проблеме с помощью исключения `Exception('что-то случилось')`, то перехватить его будет сложно. …

Спрячьте SECRET_KEY

В файле settings.py есть настройка `SECRET_KEY` — это секретный ключ, с помощью которого шифруют пароли …

Вынесите настройку DEBUG

В файле settings.py есть настройка `DEBUG`, она включает отладочный режим работы сайта. На локальной машине …

Запретите null в строковых полях БД

Если в CharField разрешить хранить `None`, то в каждом запросе к базе придется указывать сразу …

Сократите количество запросов к БД

Запросы к базе данных — одна из самых медленных операций в работе сайта. Если откинуть …

Отсортируйте импорты

С ростом программ импортов становится всё больше и больше. В некоторый момент их становится так …

Укажите related_name

Писать запросы к БД будет проще, если обратные связи сразу получат говорящие названия — `related_name`. …

Выделите содержимое блочных тегов

Блоки вёрстки внутри тегов `div`, `p` и прочих блочных элементов принято выделять отступами, чтобы визуально …

Используйте related_name

Django не зря предлагает использовать в запросах `related_name`, с ними код получается куда проще и …

Избавьтесь от сравнений с нулём

В Python избегают сравнений с нулём `== 0`. В языке достаточно инструментов, чтобы записать ту …

Оберните атрибут тега в кавычки

HTML требует, чтобы содержимое атрибутов было обернуто в кавычки. Так неправильно: ```html ``` Так верно: …

Избавьтесь от сравнений с пустой строкой

В Python не принято сравнивать с пустой строкой. В языке достаточно инструментов, чтобы записать ту …

Почините удаление корутин из списка

Цикл по корутинам (event-loop) пропускает запуск отдельных корутин и работает нестабильно. Проблему демонстрирует следующий фрагмент …

Сделайте logger глобальной переменной

Обычно логер нужен сразу внутри многих функций, и, чтобы не вызывать `getLogger` много раз внутри …

Выделите вставки кода в документации

Названия переменных, код и консольные команды внутри документации принято оформлять особым образом — как вставки …

Используйте силу Counter

Подсчёт количества повторов — это настолько частая задача, что для неё в Python есть готовый …

Высушите код

Чем больше в программе кода, тем сложнее в нём разобраться. Чем труднее разбираться, тем меньше …

Используйте super

В третьей версии Python есть стандартный способ достучаться до методов предка из класса с наследованием. …

Добавьте в парсер поддержку всех относительных адресов

Сайты в интернете — это вещь динамичная, их код постоянно обновляется, даже если внешне это …

Уточните о каком пользователе речь

Ничто не встречается в моделях данных так же часто, как ссылка на юзера через `ForeignKey` …

Спрячьте чувствительные данные

Не стоит хранить в коде токены, секретные ключи и прочие пароли. Код рано или поздно …

Разрешите пользователю указать другой путь к файлу

Зачастую пользователи хранят данные отдельно от программ. И тогда либо программа позволит указать нестандартный путь …

Используйте defaultdict

Python отличается от других языков своей богатой стандартной библиотекой. Она хорошо продумана, отлично реализована и …

Избавьтесь от условий if при логировании

Вот так делать не надо: ```python if logging_enabled: logging.info(f"Data loaded!") ``` Все эти `if` сильно …

Посчитайте количество записей на стороне БД

В Django количество записей внутри `QuerySet` можно посчитать с помощью самой обычной функции `len(…)`. Выглядит …