λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Programming/Python

[python] 파이썬 클린 μ½”λ“œ μž‘μ„± κΏ€νŒ 8가지 : 더 κΉ”λ”ν•˜κ³  가독성 높은 μ½”λ“œ μž‘μ„±ν•˜κΈ°!

by 뭅즀 2024. 7. 11.
λ°˜μ‘ν˜•

μ˜€λŠ˜μ€ 파이썬 κ°œλ°œμ„ ν•  λ•Œ 클린 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄λ €κ³  ν•΄μš”. 클린 μ½”λ“œλŠ” 가독성이 μ’‹κ³  μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μš΄ μ½”λ“œλ₯Ό μ˜λ―Έν•œλ‹΅λ‹ˆλ‹€. μ§€κΈˆλΆ€ν„° λͺ‡ 가지 μœ μš©ν•œ νŒμ„ μ†Œκ°œν• κ²Œμš”! 😊


1. λͺ…ν™•ν•˜κ³  의미 μžˆλŠ” λ³€μˆ˜λͺ… μ‚¬μš©ν•˜κΈ°

λ³€μˆ˜λͺ…은 μ½”λ“œμ˜ 가독성을 크게 μ’Œμš°ν•΄μš”. λ³€μˆ˜λͺ…은 κ·Έ λͺ©μ μ„ λΆ„λͺ…ν•˜κ²Œ λ‚˜νƒ€λ‚΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, aλ³΄λ‹€λŠ” age, nλ³΄λ‹€λŠ” number_of_items와 같이 ꡬ체적인 이름을 μ‚¬μš©ν•΄ λ³΄μ„Έμš”.

# λ‚˜μœ 예
a = 10
b = 20

# 쒋은 예
width = 10
height = 20

 

 

2. ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•˜κ²Œ ν•˜κΈ°

ν•˜λ‚˜μ˜ ν•¨μˆ˜κ°€ μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λ©΄ μ΄ν•΄ν•˜κΈ° μ–΄λ ΅κ³ , μœ μ§€λ³΄μˆ˜κ°€ νž˜λ“€μ–΄μ Έμš”. ν•¨μˆ˜λŠ” κ°€λŠ₯ν•œ ν•œ ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•˜λ„λ‘ μž‘μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

# λ‚˜μœ 예
def process_data(data):
    clean_data = clean(data)
    transformed_data = transform(clean_data)
    save_to_database(transformed_data)

# 쒋은 예
def clean_data(data):
    # 데이터 정리 μ½”λ“œ
    pass

def transform_data(clean_data):
    # 데이터 λ³€ν™˜ μ½”λ“œ
    pass

def save_data_to_database(transformed_data):
    # 데이터 μ €μž₯ μ½”λ“œ
    pass

 

 

3. μ£Όμ„μœΌλ‘œ μ½”λ“œ μ„€λͺ…ν•˜κΈ°

주석은 μ½”λ“œλ₯Ό μ„€λͺ…ν•˜λŠ” μ€‘μš”ν•œ λ„κ΅¬μ—μš”. 주석을 적절히 μ‚¬μš©ν•˜λ©΄ λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜λŠ” 데 큰 도움이 λ©λ‹ˆλ‹€. λ‹€λ§Œ, λ„ˆλ¬΄ κ³Όλ„ν•œ 주석은 ν”Όν•˜λŠ” 것이 μ’‹μ•„μš”. μ½”λ“œλŠ” μžμ²΄μ μœΌλ‘œλ„ 이해 κ°€λŠ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

# λ‚˜μœ 예
a = 10  # a에 10을 ν• λ‹Ή

# 쒋은 예
# μ‚¬μš©μž μž…λ ₯ λ‚˜μ΄λ₯Ό μ €μž₯
age = 10

 

 

4. μΌκ΄€λœ μ½”λ”© μŠ€νƒ€μΌ μœ μ§€ν•˜κΈ°

μΌκ΄€λœ μ½”λ”© μŠ€νƒ€μΌμ„ μœ μ§€ν•˜λŠ” 것은 맀우 μ€‘μš”ν•΄μš”. PEP 8 κ°€μ΄λ“œλΌμΈμ„ λ”°λ₯΄λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€. μ½”λ”© μŠ€νƒ€μΌμ„ ν†΅μΌν•˜λ©΄ μ½”λ“œμ˜ 가독성이 크게 ν–₯μƒλΌμš”.

# λ‚˜μœ 예
def myFunction(): print("Hello")

# 쒋은 예
def my_function():
    print("Hello")

 

 

5. 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜ μ‚¬μš©ν•˜κΈ°

리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ€ 리슀트λ₯Ό μƒμ„±ν•˜λŠ” κ°„κ²°ν•˜κ³  효율적인 λ°©λ²•μ΄μ—μš”. μ½”λ“œμ˜ 길이λ₯Ό 쀄이고 가독성을 λ†’μ΄λŠ” 데 도움이 λ©λ‹ˆλ‹€.

# λ‚˜μœ 예
squares = []
for x in range(10):
    squares.append(x ** 2)

# 쒋은 예
squares = [x ** 2 for x in range(10)]

 

 

6. μ˜ˆμ™Έ μ²˜λ¦¬ν•˜κΈ°

μ˜ˆμ™Έ μ²˜λ¦¬λŠ” μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ λ†’μ΄λŠ” μ€‘μš”ν•œ λΆ€λΆ„μ΄μ—μš”. μ˜ˆμ™Έ 상황을 적절히 μ²˜λ¦¬ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ΄ 예기치 μ•Šκ²Œ μ’…λ£Œλ˜λŠ” 것을 방지할 수 μžˆμ–΄μš”.

# λ‚˜μœ 예
data = {'key': 'value'}
print(data['nonexistent_key'])

# 쒋은 예
data = {'key': 'value'}
try:
    print(data['nonexistent_key'])
except KeyError:
    print('Key does not exist')

 

 

7. λΆˆν•„μš”ν•œ μ½”λ“œλŠ” μ œκ±°ν•˜κΈ°

μ½”λ“œλ₯Ό μž‘μ„±ν•œ ν›„μ—λŠ” λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό μ œκ±°ν•˜λŠ” 것이 μ’‹μ•„μš”. μ½”λ“œκ°€ λ‹¨μˆœν• μˆ˜λ‘ μ΄ν•΄ν•˜κΈ° 쉽고 μœ μ§€λ³΄μˆ˜ν•˜κΈ°λ„ μ‰¬μ›Œμš”.

# λ‚˜μœ 예
def add_numbers(a, b):
    result = a + b
    return result

# 쒋은 예
def add_numbers(a, b):
    return a + b

 

 

8. Docstring으둜 ν•¨μˆ˜ μ„€λͺ…ν•˜κΈ°

ν•¨μˆ˜λ‚˜ ν΄λž˜μŠ€μ— λŒ€ν•œ μ„€λͺ…을 Docstring으둜 μž‘μ„±ν•˜λ©΄, λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ μ½”λ“œμ˜ λͺ©μ κ³Ό μ‚¬μš©λ²•μ„ μ‰½κ²Œ 이해할 수 μžˆμ–΄μš”.

 

def add_numbers(a, b):
    """
    두 수λ₯Ό λ”ν•˜μ—¬ λ°˜ν™˜ν•©λ‹ˆλ‹€.

    Args:
    a (int): 첫 번째 숫자
    b (int): 두 번째 숫자

    Returns:
    int: 두 수의 ν•©
    """
    return a + b

 


 

μ΄λŸ¬ν•œ νŒλ“€μ„ ν™œμš©ν•˜λ©΄ 파이썬 μ½”λ“œκ°€ 더 깔끔해지고 가독성이 λ†’μ•„μ§ˆ κ±°μ˜ˆμš”. 클린 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μŠ΅κ΄€μ„ 듀이면, 개발 속도가 빨라지고 ν˜‘μ—…λ„ 더 μ›ν™œν•΄μ§„λ‹΅λ‹ˆλ‹€. 😊

λ°˜μ‘ν˜•