python code styling
python 쓰시는 분들 코드 스타일링은 어떻게 하시나요?
일단 코드는 아름다운게 못생긴 것보다 좋습니다. spacing, line break 등이 제각각이고, 안쓰는 코드들이 잔뜩 있는 코드와, 가지런하게 잘 정돈된 코드의 가독성의 차이는 크고, 생산성에도 많은 영향을 미치죠.
그래서 코드 리뷰를 할 때도 신경을 쓰게 되는데, 코드 포매팅 툴을 잘 사용하면 코드 리뷰에 불필요하게 핑퐁하며 소모되는 시간을 줄일 수 있습니다.
python 에는 pep8 이라는 공식 스타일 가이드가 있고, 이것을 준수하도록 도와주는 툴들이 꽤 많습니다. 찾아보면 일반적으로 아는 이름 외에도 더 많은 것이 있다는 것을 알게 됩니다 ㅎㅎ
저희 팀에서는 그 중 black과 flake8 을 씁니다. 서로 영역이 애매하게 달라서 둘 다 씁니다. 쓰는 방법은 엄청 간단해요. pip 로 설치 후 쉘에서 바로 돌릴 수 있고, pre-commit 훅에 걸어서 쓸 수도 있죠. 후자처럼 쓰면, black 은 룰에 맞지 않는 코드들은 자동으로 변환시켜주고, flake8 은 경고를 띄우면서 해당 문제들을 고치지 않으면 commit 을 못하도록 막아주기도 합니다. (strict 로 설정을 해줘야 합니다) 스타일을 준수하지 않으면 커밋을 못하니까 자동적으로 통일된 포맷으로 코드가 나가게 되죠.
black 은 pycharm 등 IDE 에 적용해서 파일이 저장될 때마다 바로바로 코드가 리포매팅 되게 설정해줄 수도 있어서 좋습니다.
사실 black 의 포매팅에 모두 다 동의하는 것은 아니고 몇몇 부분들은 아쉽지만, 그보다는 uncompromising하게 포매팅을 하면서 통일된 코드를 가지는 장점이 더 크다고 생각해서 사용합니다.
본인의 팀의 코드들이 가지런하지 않아서 불만이 있다면 사용을 건의해보는건 어떨까요? :)