FrontEnd
Javascript
Diary
ML
CS
Django
Algorithm
AWS
Co-Work
HTML
CSS
Python
React
ReactNative

Django 개발 권장사항

Django 개발 권장사항

☝ 단순명료하게 하라(Keep It Simple, Stupid == KISS )

단 너무 단순화된 구현을 하지는 말자

☝ 모델은 크게, 유틸리티는 모듈로, 뷰는 가볍게, 템플릿은 가볍게

코드를 어느부분에 넣어야 할지 결정할때 Fat Models, Utility Modules, Thin Views , Stupid Template를 생각하고

❕ 뷰와 템플릿을 제외한 다른 부분에 더 많은 로직을 넣어주자

간결한코드, 재사용, 문서화의 장점을 가져갈수 있을것이다. 템플릿 태그와 필터는 가능한 최소의 로직을 포함하고 있어야 한다

☝ 읽기 쉬운 코드를 작성하자

프로젝트의 관리 및 코드의 가독성 측면을 생각해서라도 다음을 권장한다

  • 축약적이거나 함축적인 변수명은 피한다
  • 함수 인자의 이름들은 꼭 써준다
  • 클래스와 메서드를 문서화 한다.
  • 코드에 주석은 꼭 달도록 한다.
  • 재사용 가능한 함수 또는 메서드 안에서 반복되는 코드들은 리팩터링
  • 함수와 메서드는 가능한 작은 크기를 유지(스크롤 없이 읽을 수 있는 길이)
  • 1줄에는 최대 79글자만 적도록 하자

코드의 이해도와 가독성을 떨어트리지 않는 수준이다. (단 변수나 함수 등 축약 네이밍을 하지 않는것이 79글자 제약보다 중요하다)

☝ PEP 8을 따르는게 좋다(새로운 프로젝트부터)

  • 들여쓰기는 스페이스 네칸을 이용한다
  • 최상위 함수와 클래스 선언 사이는 두줄을 띄운다
  • 클래스 안에서 메서드를 나누기 위해 한줄을 띄운다

path 패턴의 name에는 ”-” 이 아닌 ”_” 를 이용(파이썬 다운 코딩)

템플릿 블록의 이름도 ”_“를 이용해주자

통합개발환경이나 텍스트 편집기에 종속되는 스타일의 코딩은 지양

항상 다른 개발자가 내 코드를 다른 도구로 볼수도 있다는 생각으로 작성하도록 하자

Import에 대해

Import 의 순서는

  1. 표준 라이브러리 임포트(from math import sqrt)
  2. 코어 장고 임포트 ( from django.db import models)
  3. 장고와 무관한 외부 앱 임포트 ( from django_extensions.db.models …)
  4. 프로젝트 앱 ( appname.models import class)

명시적 성격의 상대 임포트 이용하기

하드코딩의 문제 및 이식성, 재사용 면에서 명시적 상대 임포트를 이용해주자

from core.views import FoodMixin : 절대임포트(외부에서 임포트해서 현재앱에서이용) from .models import WafleCone : 명시적 상대 (다른 모듈에서 임포트해서 현재앱에서 이용)

from models import WafleCone / 암묵적 상대 / 명시적상대와 같지만 좋지 않다.

Import * 는 하지말자

*를 이용하여 import 해주게 되면 추가로딩이 되거나 덮어쓰게 되는 경우가 생기는데 settings requirements 파일의 예외경우를 제외하고는 쓰지 않도록 하자