파이썬 코딩 컨벤션 정리

개발자 강세영·2022년 5월 11일
0

TIL

목록 보기
25/65

코딩 컨벤션이란

코딩 컨벤션은 읽고, 관리하기 쉬운 코드를 작성하기 위한 일종의 코딩 스타일 규약이다.

코딩 컨벤션을 지켜야 하는 이유?

코딩은 혼자 완성하는 것이 아니며 팀원들과 함께 하는것인데 자기에게만 알아보기 좋은 코드는 좋지않다.
다른 개발자들도 쉽게 이해할 수 있는 코드가 좋은 코드 이다.
개발이란 과정은 대체로 새 코드를 짜는 것보다 유지보수가 더 중요한데 가독성이 떨어지는 코드는 유지보수를 어렵게 만든다.

파이썬 코딩 컨벤션 기본원칙

  • 변수, 함수, 클래스, 모듈, 패키지(package)등의 이름은 최대한 한 눈에 그 목적을 이해할 수 있는 이름을 선택하는 것이 좋다
  • 일반적으로 변수나 클래스는 명사로 쓰고 함수는 동사로 쓴다
  • 변수는 snake_case 를 쓴다
  • 상수(글로벌 변수)는 UPPER_CASE를 쓴다
  • 함수는 snake_case, 동사로 쓴다
  • 클래스는 PascalCase를 쓴다
  • 모듈은 snake_case 를 쓴다
  • 패키지는 소문자만 쓰고 _을 쓰지 않는다

가독성이 떨어지는 코딩

특별한 의미가 없거나 목적이 불분명한 이름들:

object = User()
list.  = [1, 2, 3, 4, 5]

너무 자세하거나 긴 이름들:

user_who_is_created_now                         = User()
list_of_integer_numbers_that_are_less_than_five = [1, 2, 3, 4]

너무 짧은 이름들

u = User()
l = [1, 2, 3, 4, 5]
i = 7

단어 철자를 짧게 만든 이름들:

trd  = Trader()
nums = [1, 2, 3, 4, 5]

여백

  • PEP 8에 따르면 들여쓰기는 4칸이 좋다
  • 빈 줄은 한 줄만 넣는게 원칙이다
  • 빈 줄은 함수나 클래스 안에서도 한 로직 단위로 넣을 수 있다

79자가 넘으면 다음줄로

vs code같은 에디터에서도 포맷팅해주는 기능이긴 하지만 단어가 많아 가독성이 떨어진다면 79자가 안되더라도 줄을 나눠서 입력하는게 좋다. 요즘은 모니터가 커졌기 때문에 100자 정도까지는 많이 허용하는 듯 하다.

code align 활용

딕셔너리 같은 자료형을 이용할 때 코드를 정렬하면 가독성이 훨씬 좋아진다 또한 임포트문도 정렬하면 좋다
vs code의 better align 확장프로그램을 설치하면 =나 :이 들어가는 코드를 쉽게 정렬해준다.

# 정렬을 하지 않은 코드
import django
from something import awesome
from math import random
import requests

new_user = User()
new_user.name = user["name"]
new_user.age = user["age"]
new_user.feature = "?" 

user = { 
    "id" : 1, 
    "name" : "아이유", 
    "age" : 27, 
    "gender" : "Female", 
    "occupation" : "Artist"
} 
# 정렬한 코드
import django
import requests

from something import awesome
from math      import random

new_user         = User()
new_user.name    = user["name"]
new_user.age     = user["age"]
new_user.feature = "?" 

user = { 
    "id"         : 1, 
    "name"       : "아이유", 
    "age"        : 27, 
    "gender"     : "Female", 
    "occupation" : "Artist"
} 

팀에 따라 달라질 수 있음

위 내용 외에도 소속된 팀에서 정한 규칙이 있다면 그걸 따르면 된다.

같은 내용이지만 가독성이나 성능 등을 고려해서

if a == None, if a != None: # 비추

if a is None, if a is not Non:e # 추천

if not a is None: # 비추

if a not in b: # 추천

if not a in b: # 비추

0개의 댓글