코드는 가독성이 중요하다
가독성이 높은 코드는 내가 작성하지 않아도 보면 이해하기가 쉬운 코드가 가독성이 높은 코드이다.
다른 개발자들도 쉽게 이해할 수 있는 코드가 좋은 코드이다.
가독성이 좋은 코드
변수, 함수, 클래스, 모듈, 팩케지(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 와 같이 대문자로 구분
다음 사항은 일반적으로 가독성이 떨어지는 이름들로 권장하지 않는 이름 패턴들이다.
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(빈 줄)을 사용하는 것에도 암묵적으로 지켜줘야하는 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!!")
일상에서도 "줄"을 잘 맞추고 "각"을 잘 맞추면 깔끔하고 정리된 느낌을 코드에서도 주면 좋다
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"
}