파이썬 클린코드 1

yo·2022년 2월 12일
0

소개, 코드 포매팅과 도구

  • 클린 코드는 포매팅 이상의 훨씬 중요한 것을 의미한다.
  • 때문에 표준 포매팅을 유지하는 것이 유지보수성의 핵심 유의사항이다.
  • 파이썬이 제공하는 기능을 사용하여 자체 문서화된 코드를 작성하는 방법
  • 코드의 레이아웃을 일정하게 유지하여 팀 멤버들이 문제의 본질을 해결하는데 초점을 맞출 수 있도록 도구를 설정하는 방법

클린 코드의 의미

  • 클린코드에 대한 유일하고 엄격한 정의는 없다.
  • 수십 년 동안 프로그래밍 언어는 인간의 아이디어를 컴퓨터에 전달하기 위해 사용하는 언어라 생각했지만 틀린 생각이다.
  • 프로그래밍 언어의 진정한 의미는 아이디어를 다른 개발자에게 전달하는 것이다.
  • 클린 코드 여부는 다른 엔지니어 코드를 읽고 유지보수 할 수 있는지 여부에 달려 있다.
  • 클린 코드, 클린 아키텍쳐에 대한 자신만의 정의가 필요하다.

클린 코드의 중요성

  • 유지보수 향상, 기술 부채 감소, 프로젝트 성공, 민첩한 개발, 지속적 배포

기술부채

  • 부채는 이자를 유발한다.
  • 지금 바꾸는 것보다 미래에 변경하는 것이 더 어렵기 때문에 부채이다.
  • 코드 수정이 오늘 보다 내일, 내일 보다 모레가 더 어렵다.

클린 코드에서 코드 포매팅의 역할

  • 단순히 PEP-8을 준수한다고 클린코드는 아니다.
  • 하지만 코드를 올바르게 포매팅 하는 것은 작업을 효율화하기 위해 중요하다.

프로젝트 코딩 스타일 가이드 준수

  • 좋은 코드 레이아웃에서 가장 필요한 특성은 일관성이다.
  • 한 눈에 읽기 쉽고 이해하기 쉬운 코드 작성하자.
  • 표준화된 구조를 사용하면 훨씬 좋을 것이다.

Docstring과 어노테이션

훌륭한 코드는 그 자체로 자명하지만 문서화 또한 잘 되어 있다.

  • 문서화는 주석과 다르다.
  • 주석은 가급적 피해야 한다.

Annotation

  • 동적타입에선 타입을 유추하기 어렵기 때문에 Annotation은 큰 도움이 된다.
  • Mypy같은 도구로 자동화 검사까지 할 수 있으니 Annotation은 쓰는게 좋다.

Docstring

  • 소스 코드에 포함된 docs.
  • 이유가 아니라 설명이다. 이 차이가 중요하다.
  • docstring은 코멘트가 아니라 문서이다.

주석은 나쁜놈이다.

  • 코드로 아이디어를 제대로 표현하지 못했음을 나타내는 것.
  • 불가피한 경우도 있지만 대부분 안좋은 주석이다.

docstring은 좋은놈이다. 가능한 많이 추가해라.

  • 파이썬이 동적 타이핑이기 때문에 특히 더 docstring이 필요하다.

docstring의 어려운 점

  • 코드와 마찬가지로 지속적인 유지보수가 필요하며, 심지어 상세하게 작성해야 한다.
  • 팀원 모두의 공감대가 필요하고, 모두가 노력해야만 한다.

annotation

  • annotation을 지정하면 __annotations속성이 생긴다. 이는 해당 함수, 클래스의 타입힌팅 값을 보여준다.
def my_func(a:str, b:int, c:set, d:dict):
    pass

print(my_func.__annotations__)
{'a': <class 'str'>, 'b': <class 'int'>, 'c': <class 'set'>, 'd': <class 'dict'>}

Anotation은 docstring을 대체하는 것일까?

  • 아니다. docstring과 type hinting은 서로 보완적인 개념이다.
  • docstring내용을 일부 type-hinting으로 옮길 수 있는건 사실이다만.
  • 보다 나은 문서화를 위해 특히 동적 데이터 타입 같은 경우, docstring으로 예상 데이터의 예제를 제공하는 것이 좋다.
  • 이를 보고 다른 개발자는 테스트의 성공 실패 여부를 판단하는 등 많은 정보를 얻을 수 있다.

기본 품질 향상을 위한 도구 설정

  • 코드 검사 자동화 해놓자!

Mypy를 사용한 타입 힌팅

Pylint를 사용한 코드 검사

profile
Never stop asking why

0개의 댓글