이해하기 쉬운 변수 이름 짓기

Heebeom·2023년 3월 4일
1
post-thumbnail

개발할 때 이름을 어떻게 지을지 고민할 때가 많을 것이다. 실제로 우리는 생각 없이 이름을 짓다가 오류가 나기도 하고, 어떤 코드였는지 잊어버려 시간을 낭비한 경험이 많다.

게다가 우린 비영어권 국가에 살고 있기 때문에 영어에 친숙하지 않다. 이 때문에 우리는 이해하기 쉽게 이름 짓기에 더욱 신경써야 할 것이다.

이번 포스팅에서 어떻게 이름을 지어야 하는지 알아보도록 한다.

본 포스팅은 Al Sweigart의 저서인 『클린 코드, 이제는 파이썬이다』의 일부를 기반으로 작성되었습니다.



1. 대소문자 표기법

스네이크 표기법과 카멜 표기법

개발을 할때 여러 단어가 뭉쳐진 이름을 구별하기 위해 몇 가지 약속된 표기법을 사용한다. 대표적으론 스네이크 표기법(snake_case)과 카멜 표기법(camelCase)로 나뉘어져 있다.

# 스네이크 표기법 (snake_case)
# 밑줄 (_)로 단어를 구분한다.
this_is_var = 'Hello, World!'


# 카멜 표기법 (camelCase)
# 첫 단어는 소문자로, 뒤 단어는 대문자로 구분한다.
thisIsVar = 'Hello, World!'


# 파스칼 표기법 (PascalCase)
# 카멜 표기법을 따르되, 첫 단어도 대문자로 사용한다.
ThisIsVar = 'Hello, World!'

PEP 8의 명명 규약

이전 포스팅에서 소개한 PEP 8 문서에 파이썬 명명 규약이 존재한다.

# 모듈 이름은 최대한 짧고, 모두 소문자로 표기한다.
import typing


# 클래스 이름은 파스칼 표기법으로 적는다.
class ThisIsClass:
	...


# 상수 이름은 대문자 스네이크 표기법으로 적는다.
THIS_IS_CONST = 123456


# 함수, 메소드, 변수 이름은 소문자 스네이크 표기법으로 적는다.
def this_is_method(var):
	this_is_var = var


# 클래스의 Private 속성 앞에 밑줄(_)을 적는다.
class ThisIsClass:
	_password = '1q2w3e4r'

굳이 이 규약을 준수하지 않아도 된다. 요점은 어떤 표기법을 사용하는게 아니라, 그 표기법을 일관성 있게 사용해야 한다는 점이다.


2. 이름의 적절하게 짓는 법

(1) 설명은 부족한 것보다 지나치게

당연한 이야기지만, 이름은 너무 길어도 너무 짧아도 안 된다. 이름이 너무 짧으면 혼동하거나 애매할 수 있고, 너무 길면 입력하기 귀찮다.

하지만 큰 프로그램을 개발하다 보면, 이것을 지키기에 쉽지 않다. 에를 들어, payment라는 이름은 어떤 결제를 처리하는지 모호하다.

이럴 때는 차라리 annual_electic_bill_payment와 같이 단어를 추가해 용도를 확실하게 하는 것이 낫다. 이름에 단어들을 추가하면 맥락이 풍부해져 모호함이 사라진다.

(2) 접두사를 잘 활용하자

가. 쓸데 없는 접두사는 이름을 길어지게 한다

class Student:
	studentName = 'gildong'

my_student = Student()
print(my_student.studentName)

위 코드에서 Student 클래스의 studentName 속성은 분명 학생의 이름을 담고 있는게 명확한데, 굳이 'student'이라는 접두사를 사용해 변수가 쓸데없이 길어졌다.

또한 strName, numMax 같이 데이터의 타입을 명시하는 헝가리안 표기법도 지양해야 한다. 오늘날의 개발 언어와 IDE는 이런 접두사 없이도 데이터 타입을 잘 나타낼 수 있다.

나. 접두사는 모호한 점을 없애기도 한다

부울 값을 포함하는 경우에는 is, has 접두사를 붙이는 것이 좋다.

if student.is_in_class():
	point += 1

if student.has_penalty():
	point -= 2

위 코드에서 '학생이 수업을 듣고 있으면 점수 1점 추가, 벌점이 있으면 점수 2점 감소' 처럼 자연스럽게 코드를 문장으로 읽을 수 있다.

마찬가지로 이름의 단위를 추가하는 것이 좋다. 학생의 무게를 나타내는 weight라는 속성이 있다. 이 경우 무게의 단위가 kg일까, g일까? weight_kg처럼 이름에 단위가 포함되어 있으면, 처음 보는 사람도 헷갈리지 않을 것이다.

(3) 내장 이름 덮어쓰기 금지

자신이 만든 변수에 파이썬의 내장 이름을 사용하면 안 된다. 예를 들어 변수 이름을 list와 set으로 지정하면 파이썬의 내장 함수 list()와 set() 함수를 덮어쓰게 된다.

만약에 덮어씌어진 함수를 다시 사용하면 TypeError가 발생할 것이다. 이를 방지하기 위해 대화형 셀에 이름을 입력하거나, 임포트해보면 된다.

# 모듈이 있는 경우
>>> open
<bulit-in function open >

# 모듈이 없는 경우
>>> spam
Traceback (most recent call last):
...

이 쉘에서 모듈이 없으면 ModuleNotFoundError가 발생한다. 이 점을 참고해 내장 함수를 덮어씌우지 않는 이름을 찾아 사용하자.



마치며

이번 포스팅에서 파이썬 코드를 이해하기 쉽게 이름 짓는 방법을 알아보았다. 어떻게 이름을 붙이는지는 프로그램의 성능과 아무런 관련이 없지만, 가독성 높은 코드를 작성하는 데는 중요하다.

가독성 높은 코드는 이해하기 쉬우며, 기능을 추가하거나 변경하기도 쉽다. 이해하기 쉬운 코드를 작성하는 것이 좋은 프로그래머가 되는데 양질의 거름이 될 것이다.

profile
이도저도 아닌 개발자

0개의 댓글