snake_case: Python, Ruby
camelCase: Java, JS
PascalCase: 대부분 언어 클래스
kebab-case: HTML Element
user_data
is_valid
send_data()
input_is_valid()
왠만하면 좋은 네이밍으로 해결
관용어: TODO, FIXME(치명x 수정필요), XXX(더 생각 필요)
파일 나누기
Spacing(줄바꿈으로 코드 가독성)
# 한 줄에 다 넣지 말고 분리
items = [Product(), Product(), Product()]
product_list.extend(items)
# 네이밍 잘해서 줄 길이 줄이기
as-is
def create_user(email, password):
# validation 로직
if "@" not in email or len(password) < 6 :
raise Exception("유저 정보를 제대로 입력하세요")
user = {"email" : email, "password" : password}
database = Database("mysql")
database.add(user)
email_client = EmailClient()
email_client.set_config(...)
email_client.send(email, "회원가입을 축하합니다")
return True
to-be
def create_user(email, password):
validate_create_user(email, password)
user = build_user(email, password)
save_user(user)
send_welcome_mail(user.email)
return True
def build_user(email, password)
return {
"email": email,
"password": password
}
def validate_create_user(email, password):
if "@" not in email or len(password) < 6:
raise Exception("유저 정보를 제대로 입력하세요")
def save_user(user):
database = Database("mysql")
database.add(user)
def send_welcome_mail(email):
email_client = EmailClient()
email_client.set_config(...)
email_client.send(email, "회원가입을 축하합니다")
한번이라도 반복되면 함수로 빼기
as-is
def save_user(user_name, email, pw):
to-be
def save_user(user: User):
다른 것들을 건드리는 함수(const 함수 외 전부)
carts = []
def add_cart(cart):
carts.append(cart)
cart = Cart(...)
add_cart(cart)
to-be: 사이드 이펙트 x. 순수함수.
ex) return sorted(l1)
carts = []
def get_added_carts(cart):
return [...carts, cart]
cart = Cart(...)
carts = get_added_carts(cart)