python 클린코드를 위한 노력
🧽

python 클린코드를 위한 노력

Tags
Python
Clean Code
Published
September 23, 2022
Author
유레미
회사를 다니고 팀원들과 같이 일을 하게 되면서 많은 것들을 배웠다. 소통하는 법과 코드를 가독성 좋게 작성하려는 노력들을 알게 되었다. python 코딩 컨벤션에 나와있는 것도 있지만 그 외에도 새롭게 알게된 내용들이 있어 정리할 겸 글을 쓰게 되었다.

Naming

  • 함수는 일반적으로 동사 먼저 사용하는 것이 좋다. 만일 property라면 상황이 바뀌겠지만 예를 들면, eye_crop은 crop_eye로 바꾸면 된다.
  • class는 명사화 시키는 것이 좋다. 책에도 많이 적혀있지만 camelcase를 권장한다. 위의 함수를 class로 만든다면 EyeCropper로 만들 수 있다.
  • 주로 github에 잘 짜여진 코드를 보면서 네이밍 아이디어를 얻는데 get, export, parse, generate, request 등이 자주 사용된다.

for문

가능하면 list comprehension으로. 가독성이 좋다. i 같이 의미 없는 변수는 가능하면 사용하지 않는 것이 좋다. 다른 사람들이 코드를 봤을 때 이해하기 어렵기 때문
# badfor i in image_filepaths: print(i) # Goodfor image_filepath in image_filepaths: print(image_filepath)

함수

상수는 대문자로 사용하는게 좋다. 그리고 가능하면 상수는 함수 내에서 사용하지 않는 것이 좋다. 인자로 받거나 전역변수로 사용하는 것을 추천한다. 그 이유는 상수 값을 변경해야하는 경우 쉽게 찾기 어렵기 때문.
# Baddef foo(): height = 100 width = 150 return width * height # Gooddef foo(height=100, width=150): return width * height

주석

주석이 없어도 좋은 변수 이름을 설정하는 것이 좋다. 다른 사람들이 읽었을 때 함수의 역할이 무엇인지 예측할 수 있도록. 만일 인덱싱을 하는 경우는 이해를 돕기 위해 간단히 어떤 의미인지 주석을 다는 것은 좋은 방법이다. 함수에 자주 사용하는 용어들이 존재한다.
eye_list[0] # left_eye

class

어떤 기능을 만든다면 class로 만들어서 관리하는 것이 좋다. class는 하나의 문서라고 생각하면 되고 그 안의 함수들은 class 안에서 사용되는 함수들로 이루어져 있는 것이 좋다. 만일 다른 곳에서도 사용된다면 common이나 utils를 만들어 자주 쓰이는 함수들을 모아두는 것이 좋다. 코드 가독성도 좋고 통일화하기 쉽다.

코드 리팩토링

회사에서 많이 신경썼던 부분이다. 코드를 짜고 나서 다시 보며 효율적으로 작성했는지, 네이밍이 애매한 것은 없는지, for문을 남발하진 않았는지 등을 살펴본다. 리뷰어가 되었다는 마음으로 자신의 코드를 보는 것이 중요하다. 처음 코드 리팩토링을 했던 당시 구조부터 다시 짜는 상황도 겪었는데 그렇게 리팩토링을 거치니 코드가 마치 내 자식처럼 느껴지는 그 행복감은 정말 최고다😋 나중이 되면 내가 리뷰하는 날도 오겠지!!! 마지막으로 아주 좋은 2개의 툴이 있다. pylint와 black. 코드가 냄새나는 곳은 없는지 표준에 맞는지 검사해주는 툴들이다. PR 리뷰를 받기 전에 꼭 미리해보는 것을 추천한다. 나같은 경우는 github action에서 자동으로 검사해주는 파이프라인이 적용되어 있어서 문제가 있다면 push하지 못하게 되어있었다.
지금까지 배운 것은 이게 전부이다. 더 많은 것을 알아야하겠지만 지금까지 내가 배운 것들이 누군가에겐 도움이 되었으면 한다.