📬 코드 가독성에 대한 내용입니다. (일부 내용만 발췌)
<PEP 8 시리즈> Index
<목차>
- 한 줄의 최대 길이
- Import
- 뒤에 오는 콤마 (Trailing comma) 를 사용할 경우
- 주석
▶︎ 한 줄의 최대 길이
- 한 줄의 최대 길이는 79 자로 제한한다.
- Docstring, 주석과 같이 구조적 제한이 적은 긴 텍스트 블록의 경우 줄 길이는 72 자로 제한한다.
- 기대효과
- 사용되는 에디터의 윈도우 폭을 제한하여 여러 파일을 열러 겹쳐보는 것을 가능하게 한다.
- 이는 인접한 열에 두 버전을 제공하는 코드 리뷰툴을 사용할 때 작업효율을 개선한다.
- 대부분의 툴에서 기본 행바꿈은 코드의 가시적 구조를 파괴하여 이해하기 어렵게 만든다.
- 폭이 80글자로 세팅되어 있는 윈도우 에디터 툴에서, 심지어 라인의 줄바꿈을 자동으로 해주는 상황에서도, 최대 줄수를 제한하는 것은 기본 행바꿈에 의해 구조가 파괴되는 상황을 피하기 위함이다.
- 몇몇의 웹 기반 툴은 동적인 자동 줄바꿈을 지원하지 않는다.
- 기타사항
- 일부 팀은 더 긴 라인 길이를 강력하게 선호한다. 이런 팀들에 의해 유지되는 코드에 대해서는, 주석이나 Docstring 은 여전히 72 글자를 사용한다는 범위 내에서 코드의 길이를 80 글자에서 100 글자로 증가시키는 것도 허용된다.
- 파이썬의 표준라이브러리는 보수적이며, 79 글자 이내로 제안하는 것을 요구한다. (Docstring 과 주석은 72 글자)
- 백슬래시 (혹은 \, 원 단위) 를 활용하는 것은 매우 적절하다. 예를 들어 매우 길며 여러 줄을 사용하는 with 구문은 계속적으로 사용할 수 없는데, 이 경우 백슬래시가 적용 가능하다.
▶︎ Import
- import 의 위치 및 그룹화
- import 는 항상 파일의 가장 위쪽 모듈의 주석과 Docstring 뒤에, 모듈 전역 변수나 상수 전에 위치 시키도록 한다.
- import 는 아래와 같이 그룹화 하도록 한다.
- 표준 라이브러리 import
- 관련된 서브파티 import
- local application/자체 라이브러리 import
- 위의 그룹 사이에는 빈 줄을 넣는 것이 좋다.
- Module Level Dunder Names
- Modul Level “Dunder” (즉, __ 가 이름 앞 뒤로 쓰이는. [ex] all, author ...) 은 반드시 모듈 Doctring 뒤에 쓰여져야 하고, from future import 를 제외하고 import 문 전에 쓰여져야 한다.
- 파이썬에서는 future imports 는 반드시 Docstring 을 제외하고 다른 코드 전에 쓰여지는 것을 요구한다.
"""This is the example module.
This module does stuff.
"""
from __future__ import barry_as_FLUFL
__all__ = ['a', 'b', 'c']
__version__ = '0.1'
__author__ = 'Cardinal Biggles'
import os
import sys
▶︎ 뒤에 오는 콤마 (Trailing comma) 를 사용할 경우
- 기본적으로 뒤에 오는 콤마는 사용자의 선택이다.
- 하나의 Tuple 을 하나의 요소로 만들 때처럼 Trailing comma 가 의무적으로 사용되어야 하는 상황은 제외된다.
- Python 2 에서는 print 구문에서 의미를 가질 경우도 포함된다.
- 명확성을 위해, 의미없는 괄호로 문자를 덮는 것이 권장된다.
- 뒤에 오는 콤마가 의미 없는 상황에서, 콤마는 버전 컨트롤 시스템이 사용될 때 혹은 값의 리스트, 독립 변수 혹은 imported 된 item 들이 확장될 것으로 예상될 때 상당히 도움된다.
- 패턴은 각각의 값을 그 라인 위에 놓아야하며, 항상 Trailing comma 를 추가하여야 하고, 다음 줄에 닫는 괄호를 놓아야 한다.
- 뒤에 오는 콤마가 닫는 괄호처럼 같은 라인에 있어도 된다는 의미는 아닌다. (하나의 요소를 갖는 튜플은 제외)
▶︎ 주석
- 코드와 반대되는 주석은 주석이 없는 것보다 더 좋지 않다.
- 항상 코드가 바뀌고 업데이트 될 때 주석을 최신 상태로 유지하는 것을 우선 순위에 두어라.
- 주석은 완전한 문장이어야 하며, 첫 번째 글자는 소문자 식별자로 시작되지 않는 한 대문자로 적도록 한다.
- 마지막 문장을 제외하곤 문장 끝에 두 개의 스페이스를 사용하도록 한다.
- 영어를 쓸 때에는 “Strunk and White” (영어 글쓰기 책) 을 따르도록 한다.
- 영어권 국가가 아닌 파이썬 개발자들은 당신의 코드가 국가 사람이 아닌 다른 사람이 읽지 않는다고 120% 확신하지 않는 한 당신들의 주석을 영어로 작성하도록 한다. (Oh...)
- 블럭 주석 (Block comments)
- 블럭 주석은 일반적으로 완전한 문장의 조합인 하나 이상의 단락으로 구성되어 있다.
- 블럭 주석은 일반적으로 몇몇의 (혹은 모든) 코드에 적용되며, 코드로서 같은 레벨로 들여쓰기가 되어진다.
- 각각의 블럭 주석 줄은 # 와 하나의 스페이스로 시작한다. (주석 안에서 들여쓰기 경우가 아닌 경우)
- 블럭 주석 안쪽의 단락은 # 을 포함하여 분리되어진다.
- 인라인 주석 (Inline comments)
- 인라인 주석은 적당히 사용하도록 한다.
- 인라인 주석은 구문처럼 같은 라인에 있는 주석이다.
- 인라인 주석은 구문으로부터 최소 2개의 스페이스로 구분되어야한다.
- 이것들은 # 과 하나의 스페이스로 시작된다.
- 인라인 주석은 불필요하고 명백하게 명시되어 있으면 주의를 산만하게 만든다.
- 닥스트링 (Documentation Strings, Docstrings)
- 좋은 Docstring 을 작성하는 규정은 PEP 257 을 참고하도록 한다.
- 모든 public 모듈, 함수, 클래스, 메서드에 대해 Docstring 을 작성한다.
- Non-public 메서드에 대해서는 Docstring 이 필요하지 않지만, 메서드가 어떤 역할인지 설명하는 주석을 적어야 하고, 이 주석은 def 라인 다음에 위치해야 한다.
- PEP 257 에서 좋은 Docstring 작성 규정에 대해 설명하고 있다.
- 가장 중요한 것은 여러 줄로 구성된 Docstring 을 끝내는 “”” 은 혼자 있어야 함을 명심하라.
- 만약 한 줄로 Docstring 이 작성된다면 닫는 “”” 을 같은 줄에 놓아라.
'창고 > Meta PEPs (about PEPs or Processes)' 카테고리의 다른 글
[PEP 1 #0] PEP 1 - Index (0) | 2022.03.12 |
---|---|
[PEP 8 #4] PEP 8 - 프로그래밍 권장사항 (0) | 2022.03.12 |
[PEP 8 #3] PEP 8 - 네이밍 작성 규칙 (0) | 2022.03.12 |
[PEP 8 #1] PEP 8 - Python 코드에 대한 스타일 가이드라인 (0) | 2022.03.11 |
[PEP 8 #0] PEP 8 - Index (0) | 2022.03.11 |