데이터과학 삼학년

[파이썬 클린코드] Chapter1. 코드 포매팅과 도구 본문

Python

[파이썬 클린코드] Chapter1. 코드 포매팅과 도구

Dan-k 2023. 1. 15. 22:29
반응형

클린코드

- 클린 코드란 무엇일까? 공식적으로 지정한 디자인패턴을 잘 따른다던가, 파이썬의 경우 pep-8이라고 파이썬 개발을 하는데 있어 권장되는개발 스타일을 잘 따르는 것일까??

- 어떤 것보다 나는 Readable한 코드가 클린코드라고 생각한다.

- Readable한 코드란 인간의 아이디어를 컴퓨터에 전달하는 것을 넘어, 나의 아이디어를 다른 개발자가 쉽게 확인하고 유지보수를 하기 쉽게 만드는 코드라고 생각한다.

-  유지보수성 향상, 기술부채 감소, 애자일 개발을 통한 효과적인 작업을 위함

- 기술 부채 : 나쁜 결정이나 적당한 타협의 결과로 생긴 소프트웨어적 결함으로, 코드를 지금 당장 바꾸는 것보다 미래에 변경하는 것은 훨씬 어렵기 때문이고, 시간의 흐름에 따라 어려움이 가중되는 이자와 같은 개념으로, 기술부채라는 용어가 생겨남

 

코드 포매팅

- 파이썬의 경우, PEP-8(https://peps.python.org/pep-0008/) 와 같은 표준 지침에 따라 코드를 포매팅하고 구조화 하는 것

- 가령 파라미터에 인자값을 넘겨줄때는 띄어쓰기를 하지않고, 변수에 값을 할당할때는 띄어쓴다던지...

# 메서드 파라미터에 인자값 할당
def plus(a:int,b:int)-> int:
    return a+b
    
 plus(a=2,b=3)
 
 # 변수에 값 할당
 c = 10

- 클린코드란 PEP-8을 따른다고 할 수 있을까?? 

- 사실 어떤 표준 지침을 따른다기 보다, 가장 중요한 것은 일관성으로 생각함 = 코드가 일관되게 구조화되어 있으면 가독성이 높아지고 이해하기 쉬워짐

 

문서화

- Docstring

# 메서드 파라미터에 인자값 할당
def plus(a:int,b:int)-> int:
    """
    Description:
    	파라미터 두개를 더하는 메서드.
    Param:
        a: int, b: int .        
    Return:
        a+b의 결과인 int 반환.
    """
    
    return a+b

- Annotation

# bad
def launch_task(delay_in_seconds):

# goods
Seconds = float
def launch_task(delay : Seconds):


# bad
def process_clients(clients: list):

# goods
from typing import Tuple
Client = Tuple[int, str]  
def process_clients(clients: list[Client]):

- Datatype

 

 

데이터 타입 일관성 검사 툴

- mypy, pylint, blacke등과 같은 도구를 구성하여 모든 검사를 자동화하는 로직 고려

 

 

https://product.kyobobook.co.kr/detail/S000200031876

728x90
반응형
LIST
Comments