Post

Naming

우연히 유튜브 알고리즘에 의해 함수 네이밍 관련 영샹을 발견했고, 함수 네이밍에 대해 고민이 있었기에 영상 시청 후 도움이 되었던 것들 정리

함수 이렇게 만들면 넌 주니어

https://youtu.be/Wd6FJ1s_ZUc?si=a_cUE8y0twUJc14t

함수 내부의 코드, 연산에 따라 함수명을 만든다면 주니어다! 라고 영상을 시작하는데 완전 내 얘기;;

  • 함수는 코드의 재활용이 되어야하고, 그러기 위해서는 “함수 생성자”가 아닌 함수를 사용하게되는 “호출자”가 이 함수가 어떤 함수인지 명백히 알고 호출할 수 있게 해야한다

  • 함수 내부에서 사용되는 데이터들의 결과를 잘 보여주는 것이 함수의 역활이지, 내부 데이터가 어떻게 저장되는지 알리는 기능이 아니다. 그렇기에 함수 내부에 사용하고 있는 코드,연산을 가지고 함수명을 작성하면 본인만 편할뿐이다. 특히, 함수명에 and, or 이 포함되어있다면 이 것은 함수 내부에서 사용된 연산들을 나열해둔 것일 가능성이 크고, 이 연산들이 어떤 결과를 주는데 호출자의 입장을 생각하지 못했을 가능성이 크다.

  • 본인이 문서화를 잘못한다면 기술 스택의 이해도가 부족해서 용어를 사용하지 못한다거나, 내가 사용한 용어가 틀릴까 두려워 의도적으로 피하고 있을 수도 있다. 문서화를 잘 해야 재사용성이 늘고 유지보수 비용이 줄어든다!

  • 함수의 결과를 함수명에 나타내는 것이 더 효율적이고, 이 것은 상세한 내부 구현은 숨기고 사용자에게 필요한 인터페이스만 제공해야한다는 OOP의 캡슐화 원칙과 매우 유사하다. 그러니까 함수 시그니처 작성도 신경써라!

개발자의 영원한 숙제, 변수 이름 잘 짓는 5가지 원칙

https://youtu.be/GlIYGrXWIuk?si=qQWEyF0uPL0PQ66H

  1. typing하기 쉬운 이름 보다는 이해하기 쉬운 이름으로 구현

해당 도메인에서 널리 알려진 용어가 아니라면 함수명이 길어져서 줄이는 것은 좋지 않다. Process ID를 가져오는 함수를 get_PID와 같이 네이밍 하는 정도라면 Ok

  1. 정확한 이름, 하는 일을 정확하게 설명할 것

이름을 정확히 작성하려다 보면 단일 책임 원칙에 위반하는 함수들을 발견하기 쉽다. ReadUserData 라고 네임밍 해놓고, 함수 안에서 Write 동작이 있다면, 차라리 함수를 분리하자

  1. 의도를 설명하는 이름, 내가 이 함수를 작성한 의도를 이름에 어떻게 나타낼까를 고민하는 것이 좋은 네이밍을 할 수 있게 도와줌

변수명을 잘 짓기 위한 몸부림

https://brunch.co.kr/@wapj2000/29

  1. 특정한 단어 선정하기

get_somthing 과 같은 함수명은 매우 많이 사용하게 되는데, get은 너무 광범위 하기 때문에 네크워크를 통해 가져온다면 fetch, DB에서 가져온다면 read와 같이 특정한 단어를 선정하는 것이 좋다.

  • show… : 무언가를 보여주는 함수. ex) showMessage()
  • get… : 값을 반환하는 함수. ex) getAge()
  • calc… : 값을 반환하는 함수. ex) calcSum()
  • create… : 무언가를 생성하는 함수. ex) createForm()
  • check… : 무언가를 확인하고 불린값을 반환하는 함수. ex) checkPermission()
  • convert… : 무언가를 전환해주는 함수. ex) convertToString()
  1. 변수명에 세부 정보 추가하기

`game_list’ 보다는 ‘game_queryset’ 과 같이 데이터 타입, 클래스 타입을 넣어주는 것이 좋다. 특히 python은 동적 언어이기 때문에 변수의 타입을 바로 알기 쉽지 않기 때문이다.

  1. 오해할만한 네이밍 피하기

리스트안에서 중복된 element를 가져오는 함수를 만들고자 할때, get_duplicate_list() 라는 함수는 어떤 객체의 중복 리스트를 가져오는 함수라고 생각될 수 있기 때문에 ‘get_duplicatge_in_list()’와 같이 네이밍하는 것이 더 명확하다. 내가 납득되었다고 끝낼 것이 아니라, 다른 사람도 제대로 해석할 수 있을까 라고 고민하는 것이 필요!

  1. 검색하기 쉬운 네이밍

NO_RESULT 보다는 ERROR_NO_RESULT 처럼 상위 범주의 이름을 앞부분에 추가해주는 것이 검색하기 쉽다.

This post is licensed under CC BY 4.0 by the author.