[PEP8] 네이밍 컨벤션

Jean·2022년 1월 25일
0
post-thumbnail

코드를 작성하다가 이따금 내가 작성한 코드를 읽기 복잡할 때가 있다.

물론 내가 그 알고리즘이나 자료구조에 대한 공부를 하다가 만든 구현체이기 때문에 대개 이론의 이해가 덜 되서 헤매는 경우라곤 하지만 아무래도 코드를 빠르고 쉽게 읽을 수 있다면 각 자료형의 선언이나 함수의 사용 이유를 더 쉽게 파악할 수 있을 것이다.


📗 나만 알아보면 되지

사실 스스로 공부하는데 있어서 이해를 위한 끄적거림은 나만 알아봐도 상관없다고 생각한다. 그 끄적거림에 디테일을 추가한다거나 뭐...표현을 더 풍부하게 한다거나 하는 느낌을 더하는 건 귀찮고 피곤한 일이다.

하지만 프로그램의 작성에 있어서는 '나' 뿐만이 아닌 같은 공부를 하는 '타인'도 알아볼 수 있도록 짜면 좋다.

왜일까?
이건 순전히 '나'를 위해서이다. 타인도 알아볼 수 있게하기 위한 프로그램의 작성이 어째서 순전히 나를 위해서냐고 할 수 있겠지만 내가 생각한 나를 위한 이유는 몇 가지가 있다.

  1. 내가 작성한 코드라도 이 코드를 작성했다는 기억을 잊은 나는 그때의 내가 아닌 타인의 시선을 가진 나이기 때문에 나중에 다시 알아볼 수 있도록 함은 꽤 중요한 작업이라 생각한다.
  2. 내 방식대로 작성한 코드를 보고 남이 나와 똑같이 이해하기란 쉬운 일이 아니다.
  3. 내가 작성하던 프로그램을 이어 작성할 누군가는 지금껏 작성한 프로그램의 의도를 파악하기 쉬워야 한다.

되게 장황하게 늘여놨는데 간단히 말해서

  1. 훗날 내가 다시봐도 이해할 줄 알아야하고
  2. 완성된 코드를 남이 읽기 쉬워야하고
  3. 같은 일을 하는 동료가 나의 의도를 이해하기 위해서이다.

사실 현 시점에서 내가 네이밍 컨벤션을 배워 적용시켜야겠다는 생각을 가진 이유는 1번+책에서의 조언 때문이다. 2,3번의 이유는 같은 일을 할 동료가 있어야하는데...아직 코린이 수준으로 독학하는 내게 이런 경험은 전무하다ㅠㅠㅠ



📘 네이밍 컨벤션이란

네이밍 컨벤션은 이름에 대한 규칙을 말한다.

여기서 어떤 이름에 대한 규칙을 정할 것이냐가 가장 큰 주제인데 프로그래밍에서 이름을 짓는다고 생각해보면 대개 자료형이나 함수, 객체 등이 이에 해당된다.

그렇다면 어떤 규칙이 있을 지 간단히 살펴보자.

📌 CamelCase

CamelCase는 이름과 동일하게 낙타의 혹을 보고 이 모습을 본 따 만든 네이밍 컨벤션이다.
각 단어의 가장 앞 글자를 대문자로 사용해 가독성을 높인 방식이며 이 케이스의 경우, 함수의 이름을 명명하기에 유용하다.

다만 이 방식을 통해 이름을 정할 때, 이름에 두문자어가 들어간다면 두문자어를 모두 대문자로 사용해 이름을 정하는 것이 좋다. ex.) HTTPServerError(o) / HttpServerError(x)

📌 UPPERCASE & lowercase

UPPERCASE는 모든 글자를 대문자로 치환시킨 네이밍 컨벤션이다.
반대로 lowercase는 모든 글자를 소문자로 치환시킨 네이밍 컨벤션이다.

📌 mixedCase

mixedCase는 이름의 가장 앞 글자를 소문자로 지정하지만 이후 나오는 단어의 앞 글자는 대문자로 치환시킨 네이밍 컨벤션이다.

CamelCase와 유사하게 생겼지만 CamelCase는 모두 단어의 앞 글자가 대문자라는 데에 있어서, mixedCase는 이름의 가장 앞 글자만 소문자라는데 있어서 차이가 있다.

📌 _single_leading & single_trailing__

생각보다 내가 함수 이름을 정할 때, 가끔씩 써먹었던 방법이다..ㅎㅎㅎ
대충 귀찮아서 변수의 이름 뒤에 언더스코어( _ )를 붙이곤했는데 이것도 파이썬의 기능과 겹칠 수 있어 지양하도록 안내하고 있다.

📌 __double_leading & trailing_underscore__

파이썬의 함수 사용 중 흔히 사용하는 생성자(init)의 형태는 언더스코어( _ )를 앞에 두 개, 뒤에 두 개 붙여사용하곤 한다. 이는 변수명이나 함수명을 지칭하는 데에 있어 충돌하거나 혼란을 줄 수 있어 이러한 선행 더블 언더스코어 & 후행 더블 언더스코어는 지양하도록 안내하고 있다.

이런 것까지??
이름을 정하는 데에 있어 필요한 규약, 규칙 정도로 볼 수 있는 네이밍 컨벤션은 자잘한 변수이름에도 소문자 l대문자 O사용 언어에 따라 1, 0과 혼동할 수 있어 이러한 소문자들의 사용도 지양하도록 안내하고 있다. 만약 l을 사용하고 싶다면 대문자 L을 사용하는 게 좋다.



🤔 별 거 없는 것 같다...

사실 이런 컨벤션은 자잘하지만 꽤 유용하고 가독성을 높여주는데 도움을 주는 규약이다.

꼭 지켜야할 필요는 없지만 처음엔 한 번 쭉 읽어보고 이런 것들은 조심해야겠구나 하고 넘기는 수준 정도로 보면 좋을 것 같다는 생각이 들었다.

또 코딩을 하다가도 혹은 코딩이 끝나고도 컨벤션 자료를 보며, 내 코드를 다듬는 습관을 길러준다면 꽤 깔끔하게 정리된 모습이 보기 좋지 않을까? 싶다.


참고자료

profile
목표를 찾으며 공부하는 코린이🤔

0개의 댓글