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

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

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

Избавьтесь от my_...

Если эта переменная "ваша", то кто создавал остальные? :) Из-за этого префикса `my_` весь проект …

Разбейте коммит на несколько атомарных

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

Разбейте функцию на части

Функции — это строительные блоки вашей программы. Они похожи на детали конструктора Lego — из …

Укажите русскоязычный verbose_name

Атрибут `verbose_name` задает те названия, что получат поля модели данных при отображении в админке. Русскоязычный …

Воспользуйтесь Git-ом

Начну с терминов: Git и GitHub — это разные вещи. GitHub — это место для …

Сделайте поле обязательным

Записи в БД просто не имеют смысла без некоторых полей. Ниже несколько примеров таких ситуаций: …

Измените настройки STATICFILES_DIRS

После `BASE_DIR` папка верхнего уровня у всех путей одна

Высушите related_name

В Django код запросов к БД имеет свойство распухать до неприличных размеров. И чем длиннее …

Проиллюстрируйте то, о чём говорите

Некоторые вещи проще один раз показать, чем описывать словами. Сравните два описания: > Для работы …

Расширьте лимит CharField

Если имя пользователя не влезет в вашу БД — ему будет неприятно. Если адрес не …

Избавьтесь от комментариев, дублирующих код

Лишние комментарии нагромождают код, в нем сложнее ориентироваться. К тому же, они усложняют поддержку кода …

Сделайте ссылки в документации кликабельными

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

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

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

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

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

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

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

Перевесьте стили с тегов на классы

Не стоит привязывать CSS стили к тегам. Так вы поменяете настройки глобально для всех тегов …

Укажите HTML title

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

Распакуйте параметры функции

Функции созданы для того, чтобы ими пользоваться. А чтобы функцией пользоваться, надо выяснить какие данные …

Отделите STATIC_ROOT от STATICFILES_DIRS

Пока мы занимаемся отладкой django берёт на себя функции веб-сервера и веб-приложения. Обычно эти роли …

Разберите свалку в файле

Название вашего файла позволяет складывать в него что угодно. Это симптом проблемы: скорее всего стоит …

Добавьте метод `__str__`

Сейчас объекты из БД ничем друг от друга не отличаются, кроме id: ![](https://dvmn.org/filer/canonical/1600780595/714/) [*ссылка на …

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

Профили настроек вроде `production`, `test` или `development` для настроек -- это хоть и популярная, но …

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

Когда сервер присылает вам текстовый файл, то он может оказаться в любой кодировке. Название этой …

Вынесите общие функции в отдельный файл

В разработке часто встречается ситуация, когда в разных скриптах нужны одни и те же функции. …

Замените термины с программистских на продуктовые

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

Очистите код от индексов

Обращение к данным по индексу `voice_record[1][0]` сильно осложняет код. Программисту приходится держать в голове структуру …

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

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

Расскажите в README о переменных окружения

Программа берет настройки из нестандартных переменных окружения. Их не угадать без чтения кода.

Добавьте файл с зависимостями

Без точных инструкций установка программы превращается в головную боль.

Избавьтесь от дубликатов функций

Дублирование кода приводит к быстрому росту его объема. А чем больше кода, тем сложнее его …

Почините настройку DEBUG

Любое непустое значение в переменной окружения включает отладочный режим, даже если это `DEBUG=FALSE`.

Разрешите полям оставаться пустыми

Менеджерам будет сложно наполнять БД, если все поля являются обязательными для заполнения. Часто всех нужных …

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

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

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

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

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

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

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

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

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

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

Добавьте favicon

Каждая вкладка браузера имеет своё название и иконку — так она подсказывает на каком сайте …

Отделите пользователей разных соцсетей и чатов

Каждая соцсеть и каждый мессенджер следят за уникальностью своих id. Если пользователь получил id, то …

Вынесите вставки кода в отдельные блоки

В Markdown есть два формата для вставок кода. Первый — это inlines. Его применяют для …

Почините Add another для картинок

![](https://dvmn.org/filer/canonical/1600270419/713/) [Ссылка на скриншот](https://dvmn.org/filer/canonical/1600270419/713/) Там, где загружена картинка, слева показано название загруженного файла, а справа …

Разберите свалку в каталоге

Важно, чтобы название каталога всегда соответствовало содержимому. Если вы назвали папку `static/`, то все ожидают, …

Переименуйте CSS классы в kebab-case

Как и в Python для CSS классов есть свои правила по наименованию. Придерживайтесь их, чтобы …

Не трогайте стили общих компонентов

Некоторые компоненты на странице являются общими. Например, иконки Font-Awesome подключаются всего раз в шапке файла, …

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

В архив вместе с файлами попадает лишний каталог с жутким хэшом `7kna` в названии.

Используйте комбинацию num2words и transliterate

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

Перечислите сериализуемые поля

Допустим, вы пишете сериализатор для модели `YoutubeVideo`: ```py class YoutubeVideoSerializer(ModelSerializer): class Meta: model = User …

Почините извлечение filename из url

Нельзя отрезать кусочек `url` после последнего `/` и надеяться, что это название файла. В url …

Настройте проброс данных через реверс-прокси

Реверс-прокси -- это посредник, задача которого "передать" запрос от внешнего клиента ко внутреннему веб-сервису. При …