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

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

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

Очистите функции

В программировании есть такое понятие — *чистая функция*. От прочих она отличается тем, что не …

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

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

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

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

Учтите специфику window.getmaxyx

Метод `window.getmaxyx()`, несмотря на своё название, возвращает не координаты крайней ячейке, а ширину и высоту …

Настройте enumerate

Стандартный `enumerate` можно настроить так, чтобы он начинал индексировать не с нуля, а с единицы …

Почистите данные

Сложность и объем кода сильно зависят от качества данных. Чем меньше там мусора, тем проще …

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

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

Уточните название функции

Названия функций важны. Хорошее название подсказывает программисту, что делает код функции и что он вернёт …

Структурируйте работу с логером

Cуществует стандартная схема кода: 1. Создается логер в шапке файла 2. Сообщения отправляют функций внутри …

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

Временные файлы в коде — это постоянная головная боль. Их надо удалять после использования. Их …

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

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

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

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

Укажите related_name во множественном числе

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

Отпустите CancelledError

Когда asyncio закидывает внутрь корутины `CancelledError`, то ожидает что исключение всплывет вверх по стеку вызовов …

Используйте raw строки для регулярок

В Python есть особый вид строк, начинающихся с символа `r` перед кавычками: `r'Строка текста'`. Их …

Замените поля CharField / TextField

В базе данных `CharField` и `TextField` представлены по-разному. `CharField` — это поле фиксированного размера, в …

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

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

Удалите из репозитория старые установочные файлы

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

Почините битую разметку Markdown

В Markdown разметке легко ошибиться — поставьте один лишний символ \` и вы сломаете форматирование …

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

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

Включите подсветку синтаксиса в блоках кода Markdown

Подсветка синтаксиса заметно облегчает чтение кода. Сразу становится видно где вызвана функция, где начинается цикл …

Добавьте DB к названию переменной окружения

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

Учтите особенности timedelta.seconds

Название атрибута `timedelta.seconds` часто вводит в заблуждение. Сначала кажется, что речь идёт об общем количестве …

Избавьтесь от asyncio.gather, wait и create_task

Стандартные `gather` и `wait` настолько опасны в использовании, что лучше сразу от них избавиться. Они …

Почините сломанную миграцию

Миграция выглядит сломанной. Такое случается, если не протестировать её после изменений в коде. И это …

Разбейте документацию на разделы

Когда в документации один текст, тратится много времени на прочтение, чтобы узнать, например, как установить …

Проверьте репозиторий(репозитории) на GitHub

Публикация кода на GitHub прошла с ошибками. Убедитесь сами - зайдите на сайт GitHub и …

Удалите media/ из репозитория

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

Удалите лишний .gitkeep

Файл `.gitkeep` необходим для папок, в которых нет файлов. Пустые папки `git` записывать отказывается, поэтому, …

Обновите устаревшую документацию

Документация — тоже часть кода. За ней тоже стоит следить и ухаживать.

Удалите БД из репозитория

БД в репозитории не хранят по нескольким причинам: - Если случайно опубликовать БД с данными …

Добавьте в README описание проекта

Никто не будет использовать ваш код, если вы не расскажете, что он делает. Поэтому в …

Избавьтесь от сравнений с None

В Python не принято сравниваться с `None` без особой на то необходимости. Без `None` код …

Почините ссылки на посты

Когда хочется почитать пост — хочется кликнуть по картинке или броскому заголовку [здесь](https://dvmn.org/filer/canonical/1577994963/457/) или [здесь](https://dvmn.org/filer/canonical/1577735594/453/).

Подпишите иконку комментариев

Оля хотела, чтобы рядом с комментариями [была подпись](https://dvmn.org/media/12.PNG). Не стоит отклоняться от её ТЗ без …

Поставьте точки в конце предложений

Точка в конце предложения обозначает конец одной мысли и начало следующей. Это элемент форматирования текста, …

Разбейте одно предложение на несколько

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

Обработайте MultipleObjectsReturned

При вызове метода `QuerySet.get` помимо исключения `DoesNotExist` возможна еще одна ситуация — вместо одной записи …

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

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

Используйте QuerySet.first()

В Django ORM есть много полезных методов. Один из них — это `first`. Он позволяет …

Исправьте битую ссылку

Если в ссылке нет ошибок, то она будет вести на нужную страницу или откроется заданная …

Высушите код

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

Высушите названия

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

Явно укажите способ сортировки

Если в запросе не указан способ сортировки, то, значит, он не важен. База данных сделает …

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

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

Приведите к стандарту настройки уровня логирования

Каждый программист сам выбирает какой уровень логирования назначить сообщениям в логе — будeт это DEBUG, …

Обработайте DoesNotExist

При вызове метода `QuerySet.get(…)` может так случиться, что искомой записи в базе не будет, и …

Избавьтесь от комментария с кодировкой

У второй версии Python были проблемы с поддержкой кириллицы в коде. Он считал, что код …

Добавьте блок в базовый шаблон

В шаблонах не зря используют наследование. С его помощью общую логику, что повторяется на всех …

Переместите файл в статику

Все картинки на сайте делятся на две группы: статику и медиа. Первые намертво пришиты к …