1 minute read

pep8 쓰는 이유

현업에서는 협업하게 되므로 내 코드를 나보다 남들이 더 많이 읽게 된다. 이 때 어떤 변수가 무엇을 뜻하는지 알아볼 수 없고 가독성이 떨어진다면 코드를 유지보수하기 어려워진다.
PEP 8은 이러한 문제를 해결하기 위해 스타일을 정해놓은 것이다.

변수/함수 명명 규칙 (PEP 8)

피해야 할 이름

  • 소문자 l, 대문자 O, 대문자 I 하나만 변수의 이름으로 쓰는 것은 특정 폰트에서 헷갈릴 수 있기 때문에 권장하지 않는다.

패키지와 모듈의 이름

  • 모듈 이름은 짧아야 하고, ==전부 소문자==여야 한다. 가독성을 위해서라면 밑줄(_)을 써야한다.
  • 패키지 이름도 짧아야 하고, ==전부 소문자==여야 한다. 밑줄은 권장하지 않는다.

함수의 이름

  • 함수의 이름은 ==원칙적으로 소문자==여야 하고, 가독성을 위해 밑줄(_)로 단어를 나눌 수 있다.
  • 간혹 threading.py같이 이미 대/소문자를 혼용하는 경우는 대/소문자를 같이 쓰는 경우도 있다.

클래스 이름

  • 클래스 이름은 ==CapWords 형식==(단어를 대문자로 시작)을 따른다.

exception의 이름

  • exception은 클래스이므로, class와 동일하게 적용한다.
  • 단, ==맨 뒤는 “Error”로 끝==나야 한다.

전역변수의 이름

(전역 변수는 하나의 모듈 안에서만 쓰인다고 가정)

  • 전역 변수의 이름을 짓는 것은 함수 이름을 짓는 것과 같다.
  • from M import *과 같이 쓰일 모듈에서는 global이 export 될 것을 방지하기 위해 all 메커니즘이나 ==맨 앞을 밑줄로 시작==해야 한다.

함수와 메소드의 인자

  • ==메소드 인스턴스에 쓰이는 첫 번째 인자는 무조건 self==여야 한다.
  • ==클래스 메소드의 첫 번째 인자는 무조건 cls==여야 한다.
  • 예약된 키워드(in 등)와 함수의 인자가 겹치는 경우, 변수 이름 맨 뒤에 밑줄 하나를 붙이는 것으로 대체한다.(ex, class_)

메소드 이름과 인스턴스의 이름

  • 함수 이름과 동일하다.
  • public이 아닌 메소드나 인스턴스의 이름은 밑줄로 시작한다.

상수의 이름

  • 상수 이름은 전부 대문자와 밑줄로 쓰는 것을 원칙으로 한다.

출처: https://hashcode.co.kr/questions/489/파이썬에서-변수함수-이름을-지을-때-규칙이-있나요

변수명 지어주는 사이트

이렇게 변수명을 짓기 귀찮아서 찾다보니 이런 사이트가 있었다.
https://www.curioustore.com/#!/util/naming

마치며

게임 캐릭터 만들고 닉네임 짓는 것도 어려운데 변수의 이름을 남들이 알아보기 쉽게 작명해야 한다는게 많은 고민을 하게 만드는 일 같다.
기억해야 할 점은 좋은 코드는 가독성이 좋아야 한다는 점인 것 같다.