상세 컨텐츠

본문 제목

코드 스타일 가이드 알아보기 (PEP 8: 파이썬 스타일 가이드편)

카테고리 없음

by zmo 2025. 6. 1. 21:53

본문

왜 코드 형식의 일관성이 중요할까?

  • 코드가 누가 썼는지 상관없이 읽기 쉬워짐
  • 리뷰나 디버깅 시 시간 낭비를 줄임
  • 충돌(merge conflict) 가능성 ↓
  • 나중에 유지보수할 때 스트레스 ↓

코드 스타일을 맞추는 방법 3가지

1. 코딩 컨벤션을 팀에서 합의

  • 예: Google Java Style Guide, PEP8 (Python), Airbnb JS 스타일 가이드 등
  • 대부분 언어마다 대표적인 스타일 가이드가 있음
  • Notion이나 README.md에 요약본을 문서화해두는 게 좋음

2. 자동 포매터 도구 사용

  • 예시:
    • Python: black, isort
    • JavaScript/TypeScript: prettier, eslint
    • C++: clang-format
  • 팀원 모두 같은 설정 파일을 사용 (예: .prettierrc, .editorconfig 등)
  • 커밋 전에 자동으로 포매팅하는 Git hook (pre-commit)을 설정하기도 함

3. 코드 리뷰 시 스타일도 체크 항목에 포함

  • GitHub Pull Request나 GitLab Merge Request 리뷰에서 스타일도 리뷰함
  • 코드 리뷰 체크리스트에 “스타일 준수 여부”를 명시하는 것도 방법

✅ 요약

항목 설명

🤝 컨벤션 합의 처음에 팀원들과 통일된 스타일 가이드 정리
🔧 자동 포맷팅 포매터, 린터, Git hook 등 사용해서 자동화
🤖 AI 활용시 프롬프트에 스타일을 명확히 명시하거나, 사후 포매팅 적용
📄 문서화 스타일 관련 약속은 Notion/README에 기록

 

## 🔧 코딩 스타일 가이드 (Python)

- 포매터: black
- import 정렬: isortㅁ
- 함수/변수명: snake_case
- 클래스명: PascalCase
- 타입 힌트 필수
- 커밋 전 포매팅: pre-commit hook 사용

 

1. 들여쓰기 (Indentation)

  • 스페이스 4칸
  • 탭(Tab) 대신 스페이스 사용 권장
def hello():
    print("Hello")  # ← 스페이스 4칸

 

2. 최대 줄 길이

  • 일반 코드: 한 줄에 79자 이하
  • docstring이나 주석: 72자 이하 권장

 

3. 공백 규칙

  • 괄호 내부에는 공백 넣지 않기
# Bad case
my_list = [ 1, 2, 3 ]

# Good case
my_list = [1, 2, 3]

  • 연산자 양쪽에는 공백을 넣되, 정렬 용도로는 사용하지 않음
# Good case
a = 1
b = a + 2

# Bad case
a     = 1
b     = a  + 2

 

4. 함수 및 클래스 정의 간 공백

  • 함수나 클래스 사이에는 빈 줄 2줄
  • 클래스 내 메서드는 빈 줄 1줄
class MyClass:
    def method1(self):
        pass

    def method2(self):
        pass

def top_level_func():
    pass

 

5. 이름 규칙 (Naming Conventions)

요소 스타일 예시

함수 snake_case calculate_sum()
변수 snake_case total_count
클래스 PascalCase DataProcessor
상수 UPPER_CASE MAX_RETRY
모듈 snake_case my_module.py
비공개 변수 _underscore _internal_value

 

6. import 순서와 정렬

  • 표준 라이브러리 → 서드파티 → 로컬 모듈
  • 각 그룹은 빈 줄로 구분
import os
import sys

import numpy as np
import requests

from myproject.utils import do_something

→ 이를 자동으로 정리해주는 도구: isort

 

7. 문자열 사용

  • 일관성 있게 ' 또는 " 사용 (단일 인용 또는 이중 인용 선택)
  • docstring은 반드시 """ (triple double-quote) (?)
def greet(name):
    """사용자에게 인사합니다."""
    return f"Hello, {name}"

PEP 8을 자동으로 적용하는 도구

도구 설명

black 거의 모든 포매팅을 자동 적용 (PEP8 기반)
isort import 정렬 자동화
flake8 문법 오류, 스타일 위반 검사
pylint 코드 품질과 스타일 모두 분석

참고할 링크

black은?

def  add(a,b):return a +  b
x=add(1,2)
print(   x )

black으로 포매팅 후 결과

def add(a, b):
    return a + b

x = add(1, 2)
print(x)

black의 특징

특징 설명

PEP8 기반 공식 스타일 가이드에 맞춘 형식으로 포매팅
일관된 규칙 팀원마다 스타일이 달라도 결과는 항상 동일
자잘한 수정 간편 괄호, 줄바꿈, 공백 등을 깔끔하게 통일
설정이 거의 없음 "덜 고민하고, 코드에 집중하라"는 철학

 

어떻게 쓸까?

  1. black 설치
  2. pip install black
  3. 터미널에서 한 줄
  4. black your_file.py
  5. 폴더 전체 포매팅
  6. black .
  7. VS Code에서는 black 확장 설치 후 자동 저장 시 포맷팅 설정 가능