Coding Convention
프로그램 코드를 작성할 때 우리끼리의 약속같은 개념이다.
함수와 함수 사이엔 2줄을 띄운다 등의 약속
왜 통일을 해야하나?
혼자 프로그래밍을 할 경우 이게 어떻게 돌아가는 지 이해하고 쓸 수 있겠지만
같이 일하는 동료나 리뷰어, 미래의 내가 쉽게 이해하고 쓸 수 있도록 해야한다.
예를들어, '더하기'라는 함수를 만들었는데 이 함수 이름이 'minus' 나 'a'라고 해보자.
프로그램이 당장은 올바르게 작동은 하겠지만 수정하거나 확인 할 때 추론하면서 이해하는게 피곤하고 짜증나는 일이다.
이해하기 쉽게 'add'라고 쓰는 것이다.
이런 습관을 들여야 더 나은 품질의 코드를 작성하는 데에도 도움이 되고 가독성 좋은 훌륭한 프로그래머라고 볼 수 있다.
프로젝트마다 코딩 컨벤션이 다르겠지만 파이썬은 대표적으로 PEP 8이 대표적이다.
PEP (Python Enhance Proposal)
Python을 개선하기 위한 개선 제안서, Python 코드용 스타일 가이드
naming
클래스, 함수, 변수 등을 네이밍 할 때 이름만 보고도 추측이 가능해야 한다.
변수 (variable)
Snake 표기법
my_name_is_python = "My name is Python"
함수 (function)
Snake 표기법
def my_name_is_python():
pass
Class
Pascal 표기법
camel case 라고 지칭하는 경우가 있는데
첫 번째 문자만 소문자로 하는 경우를 Lower Camel Case라고 하고
첫 번째 문자가 대문자로 시작하는 경우를 Upper Camel Case라고 한다.
- 내부적으로 쓰이면 _을 앞에 붙인다.
class MyNameIsPython:
pass
상수 (constants)
상수는 대문자
PIE = 3.14
list
numbers = [1, 2, 3, 4]
number_list = [1, 2, 3, 4, 5]
for number in numbers:
pass
packages, modules
- 모듈 이름은 짧고 모두 소문자
- 가독성을 향상시키는 경우 모듈 이름에 밑줄 사용 가능 (권장하지 않음)
code lay-out
- 들여쓰기는 줄당 공백 4칸!
- 탭은 들여쓰기된 코드와 일관성을 유지하기 위해서만 사용!
- 탭과 공백을 혼합하는 것을 허용하지 않는다!
- 최상위(top-level) 함수와 클래스 정의는 2줄씩 띄어 쓴다!
- 클래스 내의 메소드 정의는 1줄씩 띄워 쓴다!
- 모든 줄을 최대 79자로 제한!
- 이진 연산자 앞이나 뒤에 중단하는 것이 허용!
- (다만, 수학의 전통을 따르는 게 가독성이 더 높음) - 이진 연산자를 앞에 두자!
PEP 8 Check Module
설치
$ pip install pep8
댓글