Django 프로젝트의 53%에 중복 코드가 있습니다.
5541 단어 djangocodequalitypythonwebdev
일부 교차로가 있어서 일부 프로젝트는 둘 이상의 진영에 속했습니다.
"중복"이란 Django가 기본적으로 사용하는 값만 지정하기 때문에 값을 명시적으로 지정할 필요가 없음을 의미합니다. 운전 강사가 "20mph 대신 20mph를 해주세요"라고 말하는 것처럼. 이러한 중복성으로 인해 노이즈에서 신호를 발견하기가 어렵기 때문에 개발자가 중요한 코드에 집중하기가 더 어렵습니다.
그러나 리던던시 노이즈입니까? 아마도 우리가 확인한 샘플에서 중복이 의도적이지 않은 것처럼 보입니다. 일부는 Zen of Python "명시적인 것이 암시적인 것보다 낫다"로 정당화합니다. 하지만 절반 이상의 프로젝트에서 33% 이상이 이를 수행한 이유는 아닌 것 같습니다. Django 기본값과 모든 기본 필드 kwargs가 하나 또는 둘이 아니라? 또한 Zen of Python은 다음을 제안합니다.
따라서 중복 설정이 있는 이유는 종종 다음과 같습니다.
True
를 False
로 변경했습니다. 소음을 어떻게 줄일 것인가? 시도하십시오our Django models.py refactor challenge .
1. 중복 설정
Django는 default settings과 함께 배송됩니다.
django.conf.settings
를 가져오면 모듈을 가져오지 않고 LazySettings
의 인스턴스를 가져옵니다. 이 개체는 실제 설정의 "홀더"를 감싸는 래퍼입니다. Django가 정상적으로 실행되는 동안 소유자는 먼저 기본 설정을 사용한 다음 환경 변수DJANGO_SETTINGS_MODULE
로 정의된 파일의 값을 수집합니다.따라서 settings.py에서 Django의 기본값을 명시적으로 설정해도 Django가 작동하는 방식은 변경되지 않지만 개발자가 코드를 유지 관리할 때 읽어야 하는 추가 코드 행입니다. 각 추가 라인의 비용은 0이 아닙니다.
이것의 의미는 Django의 default settings에 이미 정의된 값을 우리의
settings.py
에 정의할 때 작업이 idempotent 이라는 것입니다. Django에게는 가치가 없을 수도 있습니다."해킹 스택에서 바늘 찾기"의 좋은 예이기 때문에 사람이 코드를 검토할 때 이러한 것들이 네트워크를 통해 빠져나가기 쉽습니다. 하지만 Django Doctor는 코드 검토 봇이므로 놓칠 수 없습니다.
2. 중복 필드 kwargs
Django의 기본 설정과 유사하게 Django의 모델 필드에는 모델 영역이 정의될 때 재정의할 수 있는 default kwargs이 있습니다. 이전 섹션에서 강조한 대부분의 요점은 여기에서 유효하므로 다시 다룰 필요가 없습니다.
우리가 확인한 프로젝트의 29%는 kwargs를 명시적으로 정의했으며
null=False
가 압도적으로 가장 일반적이지만 null
is False
by default 입니다.그래서 대신
class SomeModel(models.Model):
some_field = models.CharField(blank=False, null=False)
우리는 일을 단순화하고 다음을 수행할 수 있습니다.
class SomeModel(models.Model):
some_field = models.CharField()
모델은 종종 중복 kwargs 없이도 충분히 조밀합니다. 밀도가 낮은 모델은 파일의 가독성을 높이고 개발자의 삶을 조금 더 좋게 만듭니다.
따라서 Don't Repeat Yourself (DRY) 과 같이 Django를 반복하지 마십시오(DRD)라고 말할 수 있습니다.
Django를 단순화할 수 있습니까?
Django 코드베이스의 절반은 단순화할 수 있으며 코드 검토 중에 무언가를 놓치기 쉽습니다. django.doctor에서 확인하거나 review your GitHub PRs에서 확인할 수 있습니다.
또는 시도해 보십시오Django challenges .
Reference
이 문제에 관하여(Django 프로젝트의 53%에 중복 코드가 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/codereviewdoctor/53-of-django-projects-have-redundant-code-594l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)