코딩 스타일과 관리
코딩 스타일은 협업을 잘 하지 않는 내 입장으로써는 다소 생소하지만 중요한 내용이라 할 수 있다.
얼마 전 협업을 할 일이 있었는데, 그 때 몇 가지 중요시 해야할 것들을 느끼게 됬다.
첫 째, 변수명 및 조건문 표기법 설정둘 째, 중요 서비스 셋 째, 코드 난이도 설정 이 3가지의 중요성을 느꼈다.
변수명의 표기법 설정
우리가 코딩 할 때에는 여러 변수들을 설정하게 된다.
이러한 변수는 그 의미를 파악하기 쉬운 범위 내에서, 짧게 작성하는 것이 좋다.
변수 설정 규칙에는 크게 카멜 케이스, 파스칼 케이스, 스네이크 케이스로 나눌 수 있는데, 예를 들어 설명하면,
수온이라는 변수가 있다고한다면, Water Temperature라는 단어를
카멜 케이스는 waterTemp 혹은 wTemp로 표기,
파스칼 케이스는 WaterTemp 혹은, WTemp,
스네이크 케이스는 water_temp 혹은 w_temp로 표기한다.
카멜 케이스와 파스칼 케이스의 차이는 일반적으로 Class를 표기하는 경우 파스칼 케이스를 사용하며,
그렇지 않은 경우 카멜케이스를 사용하도록 한다.
조건문의 표기법 설정
조건문의 표기법은 크게 2가지로 나누어 진다. BSD 방법, K&R 방법, GNU 방법으로 나뉘는데, 표기는 아래와 같다.
중요 서비스 설정
얼마전 협업으로 진행하는 서비스는 AI를 현업화 단계까지 적용하는 서비스에 해당하였다.
따라서 서비스의 중요도는 규칙적으로 하루에 한 번 애러없이 실행되는 지속성과
운영될 컴퓨터에서 문제 없이 동일한 결과가 실행 가능한 재현가능성과
AI 예측모형의 높은 정밀도를 의미하는 정확도 측면이 중요하게 작용하였다.
코드 난이도 설정
해당 서비스에서는 높은 정밀도를 위해 여러가지 테스트를 해보고 결과를 도출하여야 하였다.
따라서 빠른 결과 도출이 중요하였다. 이에 따라 gpu와 병렬처리 코드들이 많이 활용되었는데,
그 때 당시 내 역량이 부족하여, 협업 코드를 같이 수정할 수 없었다.
그리고 결과적으로, 운영될 컴퓨터에서 재현가능하게 하기 위해서 새로 코드를 짜는 과정이 필요했다.
본론으로(코딩 스타일과 자동검사)
급할수록 돌아가라는 말이 있다.
이처럼 협업을 위해서는 여러가지 약속들을 정의하고 진행하는 것은 최종적으로 시간을 줄이는 결과를 가져옵니다.
협업을 통해 프로젝트를 잘 수행하기 위해서는 따라서 프로젝트의 설계가 몹시 중요하다.
프로젝트의 설계와 관리는 잘 알지 못하는 분야라 향후 포스팅을 하는 것으로 하고,
지금부터 다루게 될 내용은 python의 코딩 스타일과 코딩 오류의 자동 검사이다.
파이썬의 스타일
파이썬 개발자는 PEP 8이라는 스타일 가이드를 만들었다.
위와 같은 가이드가 있다. python에는 이미 이러한 가이드를 자동 검사하는 도구들이 있습니다.
anaconda.org/conda-forge/pycodestyle
나는 anaconda를 활용하므로 이를 기반으로 스타일 오류 검사를 진행해 보겠다.
conda install -c conda-forge pycodestyle 로 pycodestyle을 설치했다.
나는 최근에 짠 코드를 확인하기 위해 D:/stock/2021/stock에 있는 main_1file_gen.py를 확인하여 보았다.
몇번 째 줄이 너무 길다. 등의 여러가지 문구들을 반환해 준다.
코딩 오류의 자동검사
코딩 오류를 확인해주는 툴은 Pyflakes, Pylint와 Pyflakes와 pycodestyle을 합친 flake8 등이 있다.
Pyflakes의 결과이다. 불필요한 패키지나 문법을 수정해준다.
pylint는 PEP8 적합성 또한 확인해 준다. 대신 Pyflake보다 느리다는 단점이 있다.
따라서 flake8을 사용하며 flake8은 다양한 플러그인이 존재한다고 한다.
누군가에게는 이러한 과정이 다소 불필요하고 의미 없어 보일수도 있다.
나도 그랬던 적이 있다. 제한된 시간 내에 어떠한 업무를 하기에 혼자서는 불가능한 경우가 분명히 존재한다.
그것이 공모전나 프로젝트든..
적어도 지금 나는 이러한 프로젝트의 관리가 잘되어 있으면, 향후 관리를 편하게 해 줄 수 있다고 생각한다.
해당 내용은 한빛 미디어 진지한파이썬 책을 참고하였습니다.