코드는 가독성이 중요하다
가독성이 높은 코드는 내가 작성하지 않아도 보면 이해하기가 쉬운 코드가 가독성이 높은 코드이다.
다른 개발자들도 쉽게 이해할 수 있는 코드가 좋은 코드이다.
가독성이 좋은 코드
변수, 함수, 클래스, 모듈, 팩케지(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"
}