F-Lab
🚀
깊이 있는 개발자 커뮤니티, 데브클럽에 함께 하세요

도구를 이용한 가독성 높이기: Flake8과 Pylint 와 Black

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

안녕하세요. F-Lab  'Python Backend' 과정 멘토 Jacob 입니다. 저는 센드버드 출신의 엔지니어링 조직 문화와 생산성에 관심이 많은 개발자입니다. 오늘은 세가지 도구를 이용해서 코드 가독성을 높이고 스타일 가이드를 준수하는 법을 함께 알아보려고 합니다.

 

 

개요

오래된 코드를 읽다가 이게 어떻게 동작하는지 이해가 도무지 가지 않아서 손을 놓아버린 적이 있으신가요? ‘프로그래머의 뇌’ 라는 책에 따르면 코드를 작성하는 시간보다 읽고 이해하는데 쓰는 시간이 월등히 많다고 합니다. 그런 측면에서 보면 코드의 가독성은 성능 만큼이나 중요한 요소로 꼽을 수 있을 것 같습니다. 효율적인 코드 작성은 개발자의 전문성을 결정짓는 중요한 요소 중 하나 입니다. 

 

그러나 코드가 유지보수되는 기간 동안 가독성 높은 코드를 작성하고 스타일 가이드를 준수하는 것은 쉽지 않은 일입니다. 스타일 가이드를 따르고 코드의 가독성을 유지하는 일을 경험과 지식을 통해서 수행하는 것은 높은 복잡도의 반복 작업입니다. 개발자도 사람인 이상 실수를 하기 때문에 이러한 일을 돕는 도구들이 많이 만들어졌습니다. 

 

Python 생태계에서 흔하게 쓰이는 도구들로는 Flake8, Pylint, 그리고 Black과 같은 도구들이 있습니다. 이번 글에서는 이들 도구를 활용하여 읽기 쉽고 스타일 가이드에 부합하는 코드를 작성하는 방법을 자세히 알아보겠습니다.

 

 

Flake8

https://flake8.pycqa.org/en/latest

 

Flake8은 Python 코드의 스타일을 검사하는 도구 중 하나입니다. 이를 통해 코드의 가독성과 일관성을 높일 수 있습니다. Flake8은 Python 생태계에서 가장 폭넓게 받아들여진 PEP 8 스타일 가이드를 기본적으로 따르며, 코드에서 발견된 스타일 오류를 식별해 주는데 사용됩니다. PEP 8은 파이썬 커뮤니티에서 표준에 가깝게 쓰이는 코드 스타일 가이드로, 들여쓰기, 변수 이름 지정, 줄 길이 등 다양한 측면에서 일관성을 유지하도록 규정합니다. Flake8은 이러한 규칙을 코드에 적용하여 일관된 코드 스타일을 유지할 수 있도록 도와줍니다.

 

(bash)
pip install flake8

 

Flake8을 설치한 후에는 명령줄에서 다음과 같이 실행하여 코드를 검사할 수 있습니다.

 

(bash)
flake8 your_code.py

 

 

Pylint

https://www.pylint.org

 

다음으로 알아볼 도구의 이름은 Pylint 입니다. Pylint는 Python 코드를 정적으로 분석하여 코드 품질을 평가하는 도구입니다. Flake8과 달리 Pylint는 코드의 스타일뿐만 아니라 잠재적인 버그와 semantic error 를 식별합니다. 정적 분석은 프로그램을 실행하지 않고 코드를 검사함으로써 문제를 찾아내는 분석 방법론으로 Python 과 같은 인터프리터 언어가 가지는 오류를 런타임 이전에 잡아내기 어렵다는 약점을 잘 보완해줄 수 있습니다.

 

(bash)
pip install pylint

 

Pylint를 사용하여 코드를 검사하려면 다음 명령을 실행합니다.

 

(bash)
pylint your_code.py

 

Pylint 는 정적 분석을 통해서 오류를 찾아내는 데 도움을 줄 뿐만 아니라 코드의 품질을 높이기 위한 다양한 규칙을 제공하므로 코드 작성시 유용한 피드백을 제공합니다. 피드백을 통해서 Python 프로그램을 작성하는 과정에서 흔히 저지르는 실수들 - 변수의 이름을 외부와 내부 스코프에서 재사용하거나 변수가 선언되기 이전에 참조하는 등의 - 을 찾아낼 수 있습니다. 또한 Pylint는 코드의 복잡도를 평가하고 가독성을 높이는데에도 도움이 됩니다.

 

 

Black

https://black.readthedocs.io/en/stable

 

앞서 나온 두 도구들이 코드를 분석하고 검사하는데 이용된다면 Black 은 코드를 스타일 가이드에 맞게 재작성해주는 도구입니다. 스타일 가이드는 코드의 일관성을 보장해서 가독성을 높이고 실수를 줄이기 위한 도구입니다. 하지만 스타일 가이드에 익숙해지고 코드베이스의 스타일을 통일하는데 드는 비용이 부담스러운것도 사실입니다. Black 은 코드를 일관된 형식으로 자동으로 포맷팅 해주기 때문에 이러한 상황에서 매우 유용한 도구입니다. Black 은 코드 스타일에 대한 논쟁을 줄여주고, 개발자가 코드 형식을 집중하는데 들이는 시간을 절약할 수 있도록 도와줍니다.

 

(bash)
pip install black

 

Black을 사용하여 코드를 자동으로 포맷팅하려면 다음 명령을 실행합니다.

 

(bash)
black your_code.py

 

스타일 가이드는 사람이 만드는 규칙이기 때문에 서로 상충하는 내용이 포함되거나 몇몇 사례에 대해서 명확한 가이드가 존재하지 않을 수 있습니다. Black은 코드를 자동으로 수정하여 일관된 형식을 유지하므로, 코드 리뷰 및 협업 과정에서 발생할 수 있는 스타일 관련 논쟁을 최소화합니다. 큰 코드베이스에서 일관성을 유지하는 것 뿐만 아니라 이전에 스타일 가이드가 존재하지 않았던 코드베이스에 스타일 가이드를 도입하는 과정에서도 도움을 받을 수 있습니다.

 

 

마무리

Flake8, Pylint 및 Black은 파이썬 코드의 품질을 향상시키고 스타일 가이드를 준수하는 데 도움이 되는 강력한 도구입니다. 이러한 도구들을 통해 코드를 작성할 때 일관된 스타일을 유지하고 가독성을 향상시킬 수 있습니다. 이는 개발자들 간의 협업을 원활하게 만들어주고, 유지 보수 비용을 줄여줍니다. 

 

따라서 프로젝트에 이러한 도구들을 통합하여 코드 품질을 향상시키는 것이 좋습니다. 물론 이러한 도구들을 도입하고 익숙해지는데는 시간과 노력이 들어갑니다. 하지만 평소에 조금씩 투자를 해서 코드 품질을 높게 유지하고 새로운 기능 도입이나 디버그의 난이도를 낮게 유지하는것은 투자한 시간과 노력 이상을 돌려받는 일이라고 생각됩니다. 

 

독자 분들도 코드 작성 과정에서 이러한 도구들을 적극적으로 활용해서 읽기 쉽고 높은 품질의 코드를 작성하는 경험을 해 보셨으면 좋겠습니다. 마지막으로 위에서 소개드린 도구들은 사람이 하는 일을 더 쉽게 할 수 있도록 도와주기 위해 만들어진 것이기 때문에 스스로 효율적이고 읽기 쉬운 코드를 작성하는 습관을 길러나가는 것이 가장 중요하다는 당부를 드리고 싶습니다.

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수

멘토링 코스 선택하기

  • 코스 이미지
    Java Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Node.js Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Python Backend

    대규모 서비스를 지탱할 수 있는 대체 불가능한 백엔드, 데이터 엔지니어, ML엔지니어의 길을 탐구하는 성장 과정

  • 코스 이미지
    Frontend

    기술과 브라우저를 Deep-Dive 하며 성능과 아키텍처, UX에 능한 개발자로 성장하는 과정

  • 코스 이미지
    iOS

    언어와 프레임워크, 모바일 환경에 대한 탄탄한 이해도를 갖추는 iOS 개발자 성장 과정

  • 코스 이미지
    Android

    아키텍처 설계 능력과 성능 튜닝 능력을 향상시키는 안드로이드 Deep-Dive 과정

  • 코스 이미지
    Flutter

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    React Native

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    Devops

    대규모 서비스를 지탱할 수 있는 데브옵스 엔지니어로 성장하는 과정

  • 코스 이미지
    ML Engineering

    머신러닝과 엔지니어링 자체에 대한 탄탄한 이해도를 갖추는 머신러닝 엔지니어 성장 과정

  • 코스 이미지
    Data Engineering

    확장성 있는 데이터 처리 및 수급이 가능하도록 시스템을 설계 하고 운영할 수 있는 능력을 갖추는 데이터 엔지니어 성장 과정

  • 코스 이미지
    Game Server

    대규모 라이브 게임을 운영할 수 있는 처리 능력과 아키텍처 설계 능력을 갖추는 게임 서버 개발자 성장 과정

  • 코스 이미지
    Game Client

    대규모 라이브 게임 그래픽 처리 성능과 게임 자체 성능을 높힐 수 있는 능력을 갖추는 게임 클라이언트 개발자 성장 과정

F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2024