Рубрики
Без рубрики

53% проектов Django имеют избыточный код

Код проверки доктора Django и автоматические фиксирует антиблокировки Django. Мы проверили 666 проектов Django для Pro … Tagged Django, Python, WebDev, Codequality.

Мы проверили 666 проектов Django (8 частей серии)

Код проверки доктора Django и автоматические фиксирует антиблокировки Django. Мы проверили 666 проектов Django для проблем, препятствующие ремонтопригодности и обнаружили, что 53% проектов Django имели избыточные настройки и Модель поле Kwargs

  • 33% настроек .py имели избыточные значения Подробнее
  • 29% имели поля в моделях .py с избыточными kwargs Подробнее

Были некоторые перекрестки – поэтому некоторые проекты упали в более чем один лагерь.

«Избыточным» мы имеем в виду, что значения не должны были быть явно заявлены, потому что они только указывают значение Django, используемое по умолчанию. Как и инструктор по вождению, говоря, «вместо 20 миль в час, пожалуйста, сделайте 20 миль в часу». Это избыточность трудно определить сигнал в шуме – так что для разработчиков сложнее в зоне в важном коде.

Но это резервирование шума? Возможно, и в образце мы проверили, похоже, что избыточности не было специально. Некоторые оправдывают это с Дзэн Питона «Явиз лучше, чем неявное» – но, похоже, не является причиной, почему 33% более половины проектов сделали это, потому что, если это была мотивация, то они не должны быть явно определенными все Django по умолчанию а также все Поле по умолчанию kwargs, а не только один или два? Кроме того, дзен Python также предлагает:

  • Просто лучше, чем сложный
  • Красивая лучше, чем уродливая.
  • Читаемость отсчетов
  • редкий лучше, чем плотный

Таким образом, причина наличия избыточных настроек, кажется, часто бывает:

  • Результат копирования и вставления настроек из других проектов; или
  • Исторически отсутствие значения по умолчанию было позже обновлено, а вместо удаления и использования Django по умолчанию Dev просто изменился Правда к Ложь Отказ
  • Вещи промывают, хотя сеть во время обзора кода. Большинство людей не знают каждая единое значение настройки Django по умолчанию, когда они меняются по многим версиям Django.

Как бы вы уменьшили шум? Пытаться Наши Django Models.py Refactor Challenge .

1. Избыточные настройки

Django Ships с настройки по умолчанию Отказ Когда django.conf.settings Imported мы не получаем модуль, мы получаем экземпляр Лазизеты Отказ Этот объект является оберткой вокруг «держателя» фактических настроек. Во время нормального запуска Django держатель сначала использует настройки по умолчанию, затем проглатывает значения в файле, определенном переменной среды Django_settings_module Отказ

Так что явно установленные значения Django по умолчанию в Settings.py не меняют, как работает Django, но это дополнительные строки кода, разработчики должны читать при сохранении кода. Стоимость каждой дополнительной линии ненульна.

После этого, когда мы определяем значения в наших settings.py которые уже определены в Django настройки по умолчанию Тогда действие idempotent Отказ Джангу, стоимость может и не быть там.

Это легко проскользнуть через сеть, когда человек рассматривает код, потому что это хороший пример «поиска иглы в HackStack», но Django Doctor – это код проверки кода, так что не может пропустить его:

2. Избыточное поле кваргс

Подобно настройкам Django по умолчанию, поля модели Django имеют по умолчанию kwargs которые могут быть переопределены при определенной области моделей. Большинство очков, выделенных в предыдущем разделе, действительны здесь, так что нет необходимости покрывать их снова.

29% проектов, которые мы проверили, были явно определены Kwargs, с null = Ложь быть подавляющим наиболее распространенным, но null это Ложь по умолчанию .

Так вместо того

class SomeModel(models.Model):
    some_field = models.CharField(blank=False, null=False)

Мы можем упростить вещи и делать:

class SomeModel(models.Model):
    some_field = models.CharField()

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

Так нравится Не повторяйте себя (Сухой) Можно сказать Не повторяйте Django (DRD) Отказ

Может ли твое джанго упростить?

Половина кодовых базов Django может быть упрощена, и легко пропустить что-то во время обзора кода. Я могу проверить это для вас в django.doctor или может Просмотрите свой GitHUB PRS :

Или попробуйте Django Callenges Отказ

Мы проверили 666 проектов Django (8 частей серии)

Оригинал: “https://dev.to/djangodoctor/53-of-django-projects-have-redundant-code-594l”