프로젝트를 진행하면서 import문은 빠질 수 없는 부분이다. 코드를 작성하고 디버깅하는 동안 import문을 생각없이 막 작성하였고 코드가 길어지고 복잡해질수록 import문의 순서와 구조가 중요하다는게 느껴졌다.
처음에는 간단한 코드만 작성해서 별 생각 없이 작성하였는데, 코드가 질어지니 import문을 찾는것도 힘들었다. 그러다 문득 변수명도 규칙과 스타일이 있는데 import문을 작성하는 규칙이나 스타일은 없을까? 라는 생각이 들었고 정의된 규칙이 있다는 것을 알게 되었다.
import 순서의 간단한 규칙
- import문은 알파벳 순서로 정렬될 수 있다.
- 한줄에 하나의 import문을 작성하여 가독성을 높인다.
- 각 그룹마다 빈 줄을 추가하여 import 그룹을 시각적으로 구분한다.
- 라이브러리의 축약어를 사용할 대는 표준 약어를 따르는 것이 좋다.
import문은 생각없이 작성되어서는 안된다. 정리되고 일관성 있게 작성되어야 하며, 프로젝트 팀과 함께 import 스타일에 대한 합의를 하는것도 중요하다.
import 순서
좋은 import 순서를 결정하는 것은 프로젝트의 크기와 구조, 팀의 개발 스타일에 따라 달라질 순 있겠지만 대부분의 경우는 아래의 순서대로 정리 되는 것 같았다.
- 내장 모듈
- 서드파티 라이브러리
- 내부 라이브러리 또는 프로젝트 모듈
- 프로젝트 라이브러리
- 프로젝트 앱
1. 내장 모듈
python의 내장 모듈은 매우 안정적이며 프로젝트의 어디서나 사용할 수 있기 때문에 가장 먼저 import 해준다.
import datetime
import math
import os
import sys
2. 서드파티 라이브러리
프로젝트에서 외부라이브러리를 사용하는 경우에 해당된다. 이러한 라이브러리는 내장 모듈 다음에 오며, 필요한 경우에만 사용된다.
Python의 내장 모듈이 아니지만, 다른 개발자들이 만든 유용한 라이브러리들이다.
from django.http import HttpResponse
from django.shortcuts import render
import requests
import pandas as pd
3. 내부 라이브러리 또는 프로젝트 모듈
프로젝트 내에서 공유되는 코드, 모듈 또는 패키지이다. 프로젝트에 특화된 커스텀 모듈이나 패키지로, 프로젝트의 기능을 재사용하고 모듈화하는데 사용된다.
from django.db import models
from django.utils.translation import ugettext_lazy as _
4. 프레임워크 라이브러리
프로젝트가 특정 프레임워크를 사용하는 경우, 해당 프레임 워크의 모듈을 import한다. 이는 내부 라이브러리 다음에 위치한다.
from rest_framework import status
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework.viewsets import GenericViewSet
5. 프로젝트 앱
Django 프로젝트에서는 프로젝트에 속한 각 앱을 import한다.
from core.serializers import BaseRecipeSerializer
from recipes.models import FoodRecipes
from recipes.permissions import IsOwnerOrReadOnly
from .serializers import CommentSerializer
from accounts.functions import get_user_id
'Django > DRF' 카테고리의 다른 글
[Custom] DRF Custom Render fomat (JSONRenderer) (0) | 2024.04.29 |
---|---|
[ORM] Django의 ORM이란 무엇인가? (0) | 2024.04.21 |
venv 가상환경 명령어 (0) | 2024.04.09 |
[Method] DRF PUT과 PATCH의 차이점 (0) | 2024.04.03 |
DRF 댓글 대댓글 모델 정의, Post와 serializer 연동 (0) | 2024.03.21 |