Python - Coding Convention

황인용·2019년 12월 11일
0

Python

목록 보기
4/44

코드는 가독성이 중요하다
가독성이 높은 코드는 내가 작성하지 않아도 보면 이해하기가 쉬운 코드가 가독성이 높은 코드이다.
다른 개발자들도 쉽게 이해할 수 있는 코드가 좋은 코드이다.

가독성이 좋은 코드

  • 깔끔한 코딩 스타일
  • 간단하고 명료한 로직
  • 명확한 명수, 함수, 클래스 등의 이름

Naming

변수, 함수, 클래스, 모듈, 팩케지(Package)등의 이름은 최대한 한눈에 그 목적을 이해할 수 있는 이름을 선택하는 것이 좋다
그래서 이름만 보더라도 목적이나 기능이 파악이 되는 이름이 좋다

# 변수 이름 예제
user         = User()
users        = get_users()
bmw          = Car("BMW")
http_request = HttpRequest()
total_cost   = calculate_total_cost()

# Constant(상수)
DEBUG_LEVEL = 1
MAX_USERS   = 200
VIP         = 3

# 함수 이름 예제
def calculate_total_cost():
    # ...

def get_user_permission(user):
   # ...

def buy_stock(stock_name):
   # ...

# 클래스 이름 예제
class User:
    # ...

class HttpRequest:
    # ....

class Car:
    # ...

# 모듈 이름 예제
module.py
my_module.py

# 팩케지 이름 예제
package
mypackage
  • 일반적으로 변수나 클래스는 이름이 명사로 이루어지며 함수는 동사로 이루면 좋다

  • 함수나 변수의 이름에는 (_) (밑줄, underscore)이 사용되었고 클래스 이름에는 HttpRequest 와 같이 대문자로 구분

image.png

Naming Anti Patten

다음 사항은 일반적으로 가독성이 떨어지는 이름들로 권장하지 않는 이름 패턴들이다.

  • 특별한 의미가 없거나 목적이 불분명한 이름들
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]

Space

Space(빈 줄)을 사용하는 것에도 암묵적으로 지켜줘야하는 convention이 있다.
일반적으로 빈 줄은 하나만 삽입한다

빈줄은 관련이 있는 로직(Logic) 단위로 삽입한다.

예를 들어 같은 함수라도 함수를 구성하는 로직은 여러 부분으로 나눌 수 있다.

Bad case

class User:

    def __init__(self, name):
        self.name



if True:
    print("Hello World!")
    if False:
        print("False")

else:
    print("Else")
 

def create_user(user):
    new_user      = User()

    new_user.name = user["name"]
    new_user.age  = user["age"]        
    save_user(new_user)

try:

    do_something()



except Exception as e:
    print("Exception!!")

Good case

class User:
        def __init__(self, name):
            self.name
    
    if True:
        print("Hello World!")
    
        if False:
            print("False")
    else:
        print("Else")
     
    def create_user(user):
        new_user      = User()
        new_user.name = user["name"]
        new_user.age  = user["age"]       
     
        save_user(new_user)
    
    try:
        do_something()
    except Exception as e:
        print("Exception!!")

Code Align

일상에서도 "줄"을 잘 맞추고 "각"을 잘 맞추면 깔끔하고 정리된 느낌을 코드에서도 주면 좋다

Bad case

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"
} 

Good Case

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"
}
profile
dev_pang의 pang.log

0개의 댓글