ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python 프로젝트에 Prettier 적용하기
    Back-End/Python 2023. 5. 5. 11:51

    Python 프로젝트에 Prettier 적용하기

     언젠가부터 개발할 때 코드 컨벤션에 집착하는 것이 제 새로운 습관 중 하나로 장착되었습니다. (코드리뷰 때 팀장님께 한 소리 들었던 덕분일 것 같기도) 그 덕에 새로운 프로젝트를 시작할 때마다 코드 포맷터를 먼저 세팅하는 것이 저의 루틴 중 하나로 자리 잡았는데요. 이번에도 새 파이썬 프로젝트를 준비하면서 어떤 코드 포맷팅 툴을 사용하는 것이 좋을지에 대한 고민이 많았습니다. 결론적으로는 Prettier를 선택했는데 제가 왜 Prettier를 선택했는지에 대해 말씀드리도록 하겠습니다.

     

    💡코드 포맷터를 사용하는 이유?

    공통된 코딩 스타일 가이드를 통해 스타일에 대한 토론을 중단하여 시간과 비용을 아끼기 위함.

     

     


     

    👑 제일 인기 많은 포멧터는 무엇일까?

     먼저 파이썬의 경우에는 PEP-8이라는 코드 스타일 가이드가 있습니다. PEP는 "Python Enhancement Proposal"의 약자로, 파이썬 커뮤니티에서 제안하는 파이썬의 발전을 위한 문서입니다. 이 문서 중에서 PEP-8은 파이썬 코드를 작성할 때 추천되는 코드 스타일 가이드를 제공합니다.

     

     따라서 파이썬 코드 포맷터들 역시 PEP-8 코드 스타일 가이드를 따르고 있습니다. 사람들에게 많이 알려진 툴 3가지를 대표적으로 뽑자면 Prettier, autopep8, black이 있습니다. 코드 포맷 설정하는 부분에서 자유도를 좀 더 주느냐 아니면 쉽게 설정할 수 있도록 사용자 친화적이냐 등에 따라 각자 선호도에 차이가 있을 수 있습니다. 아래는 참고사항으로 챗지피티한테 파이썬 프로그래밍에서 가장 유명한 코드 포맷터가 무엇인지 물어봤습니다.

     

    ChatGPT에게 물어본 가장 인기있는 Python 포맷터

     


     

    ⚒️ Prettier 적용 방법

    저는 젤 처음으로 먼저 Prettier를 사용했습니다. javascript에서도 적용해봤던 적이 있기 때문에 저에게 친숙할뿐더러 많은 사람들에게 알려진 도구이기 때문입니다. Prettier 적용은 아래와 같은 순서로 쉽게 적용하실 수 있습니다.

     

    1. vscode의 Extension sidebar를 연다.
    2. prettier를 검색 후 "Prettier - Code formatter"를 설치 한다.
    3. vsdode 화면 왼쪽 하단에 톱니바퀴 아이콘(⚙️) 버튼을 클릭 후 settings를 선택한다.
    4. vscode 화면 오른쪽 상단의 페이지 전환 아이콘 버튼(Open Settings(JSON))을 클릭하고 아래 코드를 집어넣는다.
    5. vscode를 재실행한다.

     

    settings.json

    {
      "workbench.colorTheme": "Visual Studio Light",
      "[python]": {
          "editor.formatOnSave": true,
          "editor.formatOnType": true,
          "editor.formatOnPaste": true,
          "editor.defaultFormatter": "ms-python.python",
          "editor.codeActionsOnSave": {
            "source.organizeImports": true
          }
      }
    }

     

    • workbench.colorTheme: 사용할 색 테마를 선택하는 옵션입니다. 현재는 "Visual Studio Light" 테마가 선택되어 있습니다.
    • [python]: Python 파일에 대한 설정을 정의하는 영역입니다. 이 설정은 Python 파일이 열릴 때 적용됩니다.
    • editor.formatOnSave: 파일을 저장할 때 자동으로 코드를 포맷팅 할 것인지를 결정하는 옵션입니다.
    • editor.formatOnType: 코드를 입력할 때 자동으로 코드를 포맷팅할 것인지를 결정하는 옵션입니다.
    • editor.formatOnPaste: 코드를 붙여 넣을 때 자동으로 코드를 포맷팅 할 것인지를 결정하는 옵션입니다.
    • editor.defaultFormatter: 코드 포맷터를 지정하는 옵션입니다. "ms-python.python"은 Microsoft에서 개발한 Python Language Server를 사용합니다. (Visual Studio Code의 Python 확장 프로그램에서 제공하는 기본 코드 포맷터)
    • editor.codeActionsOnSave: 파일을 저장할 때 자동으로 수행할 액션을 설정하는 옵션입니다. ("source.organizeImports"는 자동으로 import 문을 정리합니다.)

    주의할 점은 풀스택 개발자라면 vscode에 자바스크립트 프로젝트에 맞게 settings.json을 설정해 놓으셨을 수도 있습니다. 이 때는. vscode/settings.json 파일을 별도로 만들어서 관리해야 합니다. 추가로 defaultFormatter 역시 javascript 전용으로 세팅되어 있으므로 ms-python.python으로 변경하셔야 합니다.

     


     

    🧨 내가 생각하는 Prettier의 장단점

     위의 코드대로 세팅해놓으면 코드 작성 후 저장할 때 자동으로 컨벤션이 적용되어 매우 편리합니다. 하지만 저는 여기서 더 욕심을 내어 이 세팅을 다른 환경에서도 사용할 수 있도록 형상관리를 하고 싶었습니다. Prettier는. vscode/settings.json이라는 파일을 프로젝트의 루트 경로에 넣어놓으면 형상관리가 가능합니다.

     

    하지만 아쉬운 점도 있었습니다. 깃허브 레포지토리에. vscode/settings.json파일을 올리면 개인적으로 지저분해지는 느낌이 있습니다. vscode 대신 다른 편집기를 사용하는 사람들에게는 필요 없는 리소스 이기 때문입니다. 반면에 autopep8이나 black 등의 포맷터는 pip에서 설치해서 사용할 수 있기 때문에 requirements.txt에서 버전관리를 하면 좀 더 깔끔한 프로젝트 관리가 가능합니다.

     

     그럼에도 제가 Prettier를 사용하는 이유는 vscode툴을 사용해서 코드를 저장하거나 복사 붙여 넣기 시 자동으로 컨벤션이 적용된다는 매리트가 있기 때문입니다. 또 한 vscode settings에서 autopep8 또는 black을 선택해서 같이 사용할 수도 있고 원하는 대로 커스텀해서 사용할 수도 있습니다. (만약 코드로 집어넣을 경우 "python.formatting.provider":"black" 이런 식으로 넣어주시면 됩니다.)

    vscode python formatting provider

     


     

    🌠 앞으로 또다시 파이썬 프로젝트를 한다면 Prettier를 사용할 것인가?

     이에 대한 대답은 선뜻하기가 어려운 것 같습니다. 왜냐하면 조만간 프롬프트의 시대가 올 것 같기 때문입니다. ChatGPT나 Bard가 코드를 대신 짜준다면 기본적으로 포맷팅을 적용해서 품질 좋은 코드로 변경해 줄 것이기 때문입니다.

    만약에 사회 전반적으로 ChatGPT나 Bard 같은 생성모델 사용에 대한 규제가 이뤄진다면 그때는 또다시 vscode를 통한 Prettier 세팅을 시도할 것 같습니다. 하지만 지금 당장에는 새로운 파이썬 프로젝트를 시작한다면 autogpt 등 새로운 시도를 통한 개발을 해보고 싶은 생각입니다.

     

    'Back-End > Python' 카테고리의 다른 글

    Github 리드미에 달력 표시하기 - 2탄  (0) 2023.05.30
    Github 리드미에 달력 표시하기 - 1탄  (0) 2023.05.21

    댓글

Designed by Tistory.