ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 00. 클린코드 - Docstring과 어노테이션
    python 2022. 5. 5. 02:12
    728x90

    --주저리--

    더보기

    회사에서 진행중인 프로젝트들을 보면 시간이 지날 수록 추가 요청 사항들, 에러 수정 등 코드를 고칠일이 상당히 많은데

    이럴 때마다 코드들이 점점 지저분해져 간다는 느낌을 받았다

     

    깔끔한 유지보수를 위해 클린코드가 무엇인지 기초 공사부터 다시 배우려 한다

     

    책 앞부분에는

    '기술 부채는 나쁜 결정이나 적당한 타협의 결과로 생긴 소프트웨어적 결함을 말한다'

    '개발팀이 제 시간에 어떤 것을 제공할 수 없어서 코드를 수정하고 리팩토링하기 위해 멈춘다는 것은 기술 부채에 대한 비용을 지불한다는 뜻이다'

    라고 적혀있다

     

    나는 여태 "급하니까 일단 실행만 되게 해 놓자" 라는 식의 코드 작성만 있었던 것같다

     

    이게 나중에 어떻게 이자가 생겨서 부채로 돌아올지... 더 큰 부채가 생기기전에 '파이썬 클린코드'를 구매했다

    주말(2일)에 챕터 1개

    평일(5일)에 챕터 1개를 정독하고 실습해서

    6월초까지 완독할 예정이다

    Docstring과 어노테이션

    -훌륭한 코드는 문서화도 잘되어 있다

    -주석은 피해야한다

     

    타입 어노테이션은 다음과 같이 사용한다.

    num: int = 1
    

    변수명 바로 옆에 : int 와 같이 사용하여 num 변수가 int형 임을 명시한다.

    def add(a: int, b: int) -> int: 
        return a+b

    어노테이션은 힌트는 준다고 생각하면 된다

    타입 뿐만아니라 문자열, 콜백 등 사용가능

    어노테이션에는 __annotations_.라는 속성도 있다.

    {어노테이션의 이름: 타입, return:결과} 의 형태로 출력이 되서 문서 생성이나 유효성검증, 타입체크를 할 수 있도록 한다

     

     

    Docstring은 객체 안에 정의되어 있으면 __doc__속성을 통해 접근이 가능하다

    def my_fn():
    	"""임의의 계산 수행"""
        return None
    
    my_fn.__doc__
    '임의의 계산 수행'

    어노테이션이랑 docstring은 서로 보완적인 개념이다

    어노테이션으로 dic을 파라미터로 받아서 dic형태로 반환한다고 작성을 해도

    파라메터로 다른 형태가 들어올 수도 있기 때문에 docstring으로 구체적인 설명을 해줘야한다

     

    입출력을 더 잘 이해하기 위해서 뿐만 아니라 단위 테스트에서도 유용한 정보로 사용된다.

    Mypy는 정적 타입 검사 도구이다.

    프로젝트의 모든 파일을 분석하여 타입 불일치 검사를 해준다

    mypy가 완벽한 도구는 아니어서 가끔 잘못된 탐지를 할 때가 있다

    문장 끝에 주석을 추가한다

    type_to_ignore = "something" # type : ignore

     

    pip install mypy

    mypy {파일명}

    >> 타입 검사 결과 제공

     

    pylint는 코드의 구조를 검사하는 도구

    pip install pylint

    .pylintrc파일을 통해 규칙을 활성화 비활성화할 수 있고 한줄의 최대 글자수 같은 값을 설정할 수 있다고 한다

     

     

    728x90

    'python' 카테고리의 다른 글

    [Sotfteer/소프티어]연탄의 크기 python  (0) 2025.03.18
    01. iter  (0) 2022.07.11
Designed by Tistory.