스타일 가이드, 외우지 말고 도구에 맡기기

Tasker_Jang·2026년 4월 19일
post-thumbnail

🤔 이게 왜 문제인가

혼자 코딩할 때는 들여쓰기가 2칸이든 4칸이든, 변수명이 myVarmy_var든 돌아가기만 하면 그만입니다. 그런데 팀 프로젝트에 합류하는 순간 얘기가 달라집니다. PR을 올렸더니 리뷰어가 "공백 좀…", "네이밍이 좀…" 하면서 리뷰가 산으로 가고, 코드 로직은 제대로 보지도 않은 채 스타일 지적만 잔뜩 받는 상황이 벌어집니다. 경험해보면 꽤 허무합니다.

파이썬은 공식 스타일 가이드인 PEP 8이 있어서, 이걸 따르면 "누가 짰는지 모를 정도로 비슷한 코드"가 나옵니다. 그것이 바로 팀 코드의 이상적인 모습입니다. 다른 사람 코드를 읽을 때 스타일 차이 때문에 뇌가 낭비되지 않도록 하려는 것입니다.

💣 흔한 실수

import os,sys
from myapp.utils import *
import requests

MAX_RETRY=3

class userProfile:
    def __init__(self,name,age ):
        self.name=name
        self.__age = age
    def getAge( self ):
        if len(self.name)==0:
            return None
        return self.__age

# 한 줄 if, 공백 엉망, 네이밍 제멋대로
if x==None :result=0
else: result =x*2

들여쓰기, 공백, 네이밍, 임포트 순서가 모두 제각각입니다. 컴파일은 되지만 팀원들이 읽다가 한숨을 쉴 코드입니다. 특히 len(self.name) == 0 같은 표현은 파이썬답지 않고, 한 줄 if-else는 디버깅할 때 브레이크포인트도 못 찍습니다.

✅ 파이썬다운 방법

import os
import sys

import requests

from myapp.utils import sanitize

MAX_RETRY = 3


class UserProfile:
    def __init__(self, name: str, age: int):
        self.name = name
        self._age = age  # 보호 속성은 밑줄 하나

    def get_age(self) -> int | None:
        if not self.name:  # 빈 문자열 체크는 이렇게
            return None
        return self._age


# 한 줄에 다 쓰지 말고 풀어 쓰기
if x is None:
    result = 0
else:
    result = x * 2

몇 가지 핵심만 짚자면 임포트는 표준/서드파티/자체 모듈 순으로 한 줄에 하나씩 쓰고, 클래스는 PascalCase, 함수와 변수는 snake_case, 상수는 UPPER_SNAKE로 짓고, == None 대신 is None을 쓰고, 빈 컨테이너 검사는 if not container로 합니다. 이것만 지켜도 가독성이 확 살아납니다. 함수 사이는 빈 줄 2개, 메서드 사이는 빈 줄 1개라는 것도 기억해 두면 좋습니다.

📎 기억할 것

  • 들여쓰기는 스페이스 4칸, 한 줄은 79자 이하가 기본입니다(팀에 따라 88/100자로 완화하기도 합니다).
  • == None, == True, len(x) == 0 같은 명시적 비교 대신 is None, if x, if not x를 씁니다.
  • 변수는 snake_case, 클래스는 PascalCase, 상수는 UPPER_SNAKE_CASE로 짓고, 메서드의 첫 인자는 항상 self입니다.
  • 줄이 길어지면 백슬래시(\) 대신 괄호로 감싸서 줄바꿈합니다. 훨씬 안전합니다.
  • 임포트는 파일 맨 위에 절대 경로로 쓰고, 표준 라이브러리 → 서드파티 → 내부 모듈 순서로 정렬합니다.

🛠 실무에서 어디 쓸까

스타일 규칙을 전부 외워서 손으로 지키는 것은 비효율적입니다. 실무에서는 black(또는 요즘 뜨는 ruff format)을 포매터로, ruffpylint를 린터로 쓰고 저장할 때마다 자동으로 돌아가게 설정해 두는 것이 좋습니다. 여기에 pre-commit 훅까지 붙이면 스타일이 어긋난 코드는 커밋 자체가 안 됩니다. 한 번 세팅하면 "스타일 때문에 PR 리뷰가 길어지는 일"이 사라져서, 리뷰어는 로직에만 집중할 수 있습니다. 신규 프로젝트를 세팅할 때 pyproject.toml[tool.ruff] 설정을 박아두는 것만으로 팀 생산성이 눈에 띄게 올라갑니다.

profile
ML Engineer 🧠 | AI 모델 개발과 최적화 경험을 기록하며 성장하는 개발자 🚀 The light that burns twice as bright burns half as long ✨

0개의 댓글