SW/면접

개발자라면 꼭 알아야 할 Clean Code 작성법 5가지 꿀팁

얇은생각 2025. 4. 18. 07:30
반응형

혹시 이런 경험 있으세요? 몇 주 전만 해도 머릿속에 선명했던 코드가, 다시 열어보니 낯설기만 하고 이해도 안 되는 상황. 저도 진짜 많이 겪었어요. 코드를 보면서 "이걸 왜 이렇게 짰지...?" 하고 머리 긁적였던 날들이 수도 없이 많죠.

그럴 때마다 느끼는 건 딱 하나예요. Clean Code, 이게 정말 중요하구나. 작동만 잘하는 코드보다, 누가 봐도 한 번에 이해되는 코드가 진짜 프로의 코드 같아요.

그래서 오늘은 제가 직접 부딪히고 깨달은 Clean Code 핵심 팁 5가지, 아주 솔직하게 공유해볼까 해요. 정답처럼 외우는 게 아니라, "아 나도 이랬는데~" 싶은 그런 이야기들로요.

자, 편하게 읽어주세요. 커피 한 잔 옆에 두고 보면 더 좋고요 ☕

 

개발자라면 꼭 알아야 할 Clean Code 작성법 5가지 꿀팁

 


 

1. if 안의 if 안의 if… 코드도 숨 좀 쉬자!

솔직히 고백하자면, 저도 초반엔 중첩된 조건문이 뭔가 멋있어 보였어요. 똑똑해 보인달까? 근데 다시 보면 그냥… 숨 막혀요. 마치 코드가 미로처럼 느껴지더라고요.

예전 제 코드예요. 지금 보면 쥐구멍이라도…

for number in numbers:
    if number > 0:
        if number % 2 == 0:
            if number <= 100:
                results.append(number)
            else:
                print("너무 큰 수입니다")
        else:
            print("홀수네요")
    else:
        print("양수가 아닙니다")

 

근데 조건 순서를 바꾸고 continue를 쓰니까 이렇게 깔끔해지더라고요:

for number in numbers:
    if number <= 0:
        print("양수가 아닙니다")
        continue
    if number % 2 != 0:
        print("홀수네요")
        continue
    if number > 100:
        print("너무 큰 수입니다")
        continue

    results.append(number)

 

이렇게 바꾸고 나서 코드를 읽을 때 숨이 좀 트인 느낌이랄까요? 꼭 한번 해보세요.

 

 


 

2. 변수 이름, 그냥 아무거나 쓰지 마세요 😅

한창 바쁠 땐 변수명 고민하기 귀찮잖아요. 그래서 i, d, temp 이런 거 쓰게 되는데… 진짜 며칠만 지나면 그게 뭔지 저도 몰라요.

예전 코드예요:

def process_data(d):
    for i in d:
        if i["tp"] == "CUST":
            if i["act"]:
                print(i["bal"])

 

지금 보면… 이게 뭐야 싶죠. 그래서 이렇게 바꿔봤어요:

def filter_active_customers(customers):
    for customer in customers:
        if customer["type"] == "CUSTOMER":
            if customer["is_active"]:
                print(customer["balance"])

 

변수 이름만 바꿨는데 분위기가 달라요. 코드가 말 걸어오는 느낌? 😊

진짜 사소해 보여도, 변수명만 잘 써도 코드가 한결 친절해져요.

 


 

3. 함수, 다 해먹지 말자 – 역할 분담 좀 하자구요

한 번은 회사에서 어떤 함수 하나를 열었는데… 진짜 150줄짜리 몬스터였어요. 데이터 처리, DB 저장, Excel 출력까지 전부 다! 보는 순간 한숨부터 나왔어요.

저희도 종종 이렇게 돼요:

def process_orders(orders):
    receipts = []
    for order in orders:
        if not order.fulfilled:
            continue
        update_inventory(order)
        receipt = generate_receipt(order)
        receipts.append(receipt)
    return receipts

 

나쁘진 않지만, 좀 숨차죠? 나눠보면 이래요:

def filter_fulfilled_orders(orders):
    return [order for order in orders if order.fulfilled]

def process_order(order):
    update_inventory(order)
    return generate_receipt(order)

def process_orders(orders):
    fulfilled_orders = filter_fulfilled_orders(orders)
    return [process_order(order) for order in fulfilled_orders]

 

이렇게 쪼개면 한 눈에 흐름이 보여요. 수정도 편하고, 테스트도 쉬워지고요. 정말 강추!

 


 

4. 숫자 그냥 박아넣지 말고 이름 좀 붙이자

어느 날 제 코드에서 ‘10’이 있었는데… 그게 배송비였던가, 수수료였던가? 기억이 안 나는 거예요. 이런 게 바로 Magic Number라 불리는 친구들이에요. 왜 있는지 모를 숫자들.

예시:

def calculate_shipping(weight, destination):
    if destination == "US":
        if weight > 5:
            return 10
    elif destination == "CA":
        if weight > 4:
            return 12
    return 5

 

이걸 이렇게 바꾸면요:

from collections import namedtuple

ShippingRule = namedtuple("ShippingRule", ["max_weight", "fee"])

SHIPPING_RULES = {
    "US": ShippingRule(max_weight=5, fee=10),
    "CA": ShippingRule(max_weight=4, fee=12),
}

DEFAULT_FEE = 5

def calculate_shipping(weight, destination):
    rule = SHIPPING_RULES.get(destination)
    if rule and weight > rule.max_weight:
        return rule.fee
    return DEFAULT_FEE

 

이제 숫자들 하나하나 다 ‘정체’를 가지고 있잖아요. 보는 사람도 헷갈릴 일이 없죠.

 


 

5. 주석? 꼭 필요할 때만! 코드가 말하게 하자

예전에 저도 주석 열심히 달았어요. 근데 웃긴 게, 코드 바꾸고 주석 안 바꾸면 오히려 더 헷갈려요. 나중엔 주석이 문제 되기도 해요.

예전 스타일:

# 세금 계산
price += price * tax_rate
# 할인 적용
price -= price * discount_rate
# 음수 방지
price = max(price, 0)

 

좀 더 세련되게 바꾸면:

def calculate_price_with_discounts(base_price, tax_rate, discount_rate):
    tax_amount = base_price * tax_rate
    price_after_tax = base_price + tax_amount
    discount_amount = price_after_tax * discount_rate
    final_price = price_after_tax - discount_amount
    return max(final_price, 0)

 

변수명이 설명을 다 해주니까 주석이 딱히 필요 없죠? 말 잘하는 코드, 그게 진짜 깔끔한 코드라고 생각해요.

 


 

마무리 – 결국, 좋은 코드는 ‘배려’입니다

Clean Code는 단순히 기술적인 게 아니에요. 팀원에 대한 배려, 그리고 미래의 나를 위한 작은 선물이기도 해요.

오늘 이야기한 것들 다시 정리하자면:

  • 조건 중첩 줄이기
  • 변수 이름에 정성 들이기
  • 함수는 역할 하나씩
  • Magic Number 없애고 상수 쓰기
  • 주석은 꼭 필요할 때만

이 다섯 가지만 지켜도 코드가 확 바뀝니다. 개발 실력은 결국 이런 디테일에서 차이 나는 것 같아요.

공감되셨다면 주변 개발자에게도 꼭 공유해 주세요. 우리 같이 더 편하고 예쁜 코드 써봐요 😊

반응형