개발자들의 공통 고민인 이름 짓기는 방법에 관하여 찾다가 좋은 영상을 발견하여 공유겸 정리겸 글을 작성해봅니다!
바로 아래의 동영상입니다! 삼평동 연구소라는 채널의 최바울 님께서 올리신 영상입니다!
위 영상을 보면서 최바울님께서 말씀하신 5가지 원칙을 제가 하는 업무/파이썬 예시로 정리해보았습니다. ㅎ
변수명, 함수명 잘 짓는 5가지 원칙
1. 이해하기 쉬운 이름
- 차라리 긴 이름이 낫다
개발을 하다보면 변수명이나 함수명에 약자, 줄임말을 쓰는 경우가 많은데 자칫 잘못하면 이해하기 어려운 이름이 되버리는 경우가 발생한다고 합니다.
유저 정보를 가져오는 함수를 만든다 하였을 때 get_udl() 보다는 get_user_data_list() 가 이해하기 쉬운 이름일 것입니다.
예외도 존재 하는데 개발자들에게 통용하는 약어나 약자의 경우 줄이는 것입니다.
get_database_cursor() 를 get_db_cursor() 로 표기하는 것과 같이 말입니다.
다음과 같은 경우 처럼 코드상 오해할 부분이 없이 명확하다면 관례적인 케이스로 코드를 작성하는 것도 괜찮다고 합니다.
for user_data_list_index in range(len(user_data_list)):
user_data = user_data_list[user_data_list_index]
for i in range(len(user_data_list)):
user_data = user_data_list[i]
단, 해당 부분의 스코프가 너무 넓을 경우 오해의 소지를 불러 올 수 있으니 정확한 명칭을 쓰는게 더 좋다고 합니다.
2. 정확한 이름
해당 함수가 정확하게 어떤 일을 하는지 표현 하는 이름을 선택하는 것이 좋다고 합니다. 이를 고려하여 이름을 정하다보면 해당 함수가 하는 일을 명확하게 설명해야 하는데 이 과정을 통해 객체지향의 5원칙 중 단일 챔임 원칙에 적합한 함수인지를 다시 생각해볼 수 있게 합니다.
- 단일 책임 원칙(single responsibility principle) : 하나의 객체는 반드시 하나의 일을 해야한다
유저의 정보를 가져오고 업데이트 하는 합수가 있고 해당 함수가 아래와 같은 이름이라면 다음과 같이 함수 자체를 분리하여 구분하는 것이
더 바람직한 방법이기 때문입니다.
# 기존 함수
get_and_updata_user_data()
# 함수 분리
get_user_data()
update_user_data()
또 한 함수의 이름이 설명하는 것 외의 작업을 수행하는 함수의 경우, 좋지 않은 구조일 가능성이 크기에 확인해보아야 합니다.
insert_data() 의 함수이지만 해당 함수 실제로 동작하는 방식이 delete 후 insert 일 경우 이는 좋지 않은 구조를 가진 함수인 것이며
큰 프로젝트를 여러사람 들과 작업 시 문제를 일으킬 수 있는 위험 요소일수 있습니다.
3. 의도를 설명하는 이름
이 부분이 영상을 보며 좀 헷갈렸는데 간단히 말하면 동작을 표현하는 이름이 아닌 동작의 의도를 표현하는 이름의 사용을 설명하는 것이라 이해했습니다. token = None 보다는 reset_token() 내에 token = None 코드를 사용하여 구현하는 것이 해당 코드의 의도가 들어나는 좋은 이름인 것이죠. 그리고 함수를 만드는 리소스는 무시해도 될 정도의 리소스기에 무리한 수준이 아니라면 이처럼 함수를 만들어 의도를 들어내는 것은 좋은 방법이라고 합니다.
# token = None
def reset_token():
token = None
4. 주석이 불필요한 이름
애매한 코드에 주석을 다는 것은 좋은 습관이나 애초에 주석이 불필요한 명확한 코드가 좋다! 입니다.
# user_status = 1
# user가 로그인한 유저의 상태를 설정하기 위한 코드
def set_login_status(user_status): -> 의도
user_status = 1 -> 구현
return user_status
5. 예상되는 이름
함수 작성시 예상되는 이름을 사용하여 작성하자 입니다. 유저 관련 함수들을 만들때 create 가 있다면 delete도 있을 것이고 get_user_data 같은 함수도 있을 것이라 예상되기에 이러한 이름을 선정하여 코드를 작성 하는게 좋다는 것입니다.
이는 협업을 할때도 큰 도움이 되기에 중요한 원칙이라 생각됩니다. 또 한 보편적으로 예상되는 단어를 사용하는 것이 남들이 보기에도 이해하기 쉬운 코드가 될 것입니다.
짝이 되는 이름 : create, delete
예상되는 이름 : get_user_data, set_user_data
# modifiy_user_data()
set_user_data()
위의 영상의 내용을 제가 이해한 대로 옮긴 것이기 ㅎ 영상을 먼저보시고 제 글을 읽는 것이 더 좋을 것이라 생각합니다. 감사합니다.
'개발' 카테고리의 다른 글
[ChatGPT] ChatGPT란 무엇인가? 이걸 왜 공부해야할까? (0) | 2023.03.10 |
---|---|
[Git] github ssh-key 생성, 깃허브 ssh 등록, 설정 git clone 방법 (0) | 2023.02.25 |
[NFT] NFT 만드는 법 (이더리움 기반) - 2 - (0) | 2021.12.17 |
[NFT] NFT란 무엇인가? - 1 - (0) | 2021.12.17 |
[solr] 솔라 검색 쿼리 파라미터, query parameter (0) | 2021.06.17 |