- Published on
클린코드 - 2장. 의미있는 이름
- Authors
- Name
- Gibo Ryu
- @ryugibo
노마드코더 북클럽 클린코드 TIL 두번째
2022년 4월 24일 TIL
오늘 TIL 3줄 요약
- 이름에 의미가 명확하지 않은 부분은 덜어내자.
- 발음하기 쉬운 이름을 사용해라.
- 코드를 읽을 사람이 프로그래머임을 명심하고 이름을 짓자.
오늘 읽은 범위
- 2장 의미있는 이름
책에서 기억하고 싶은 내용을 써보세요.
- 컴파일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다. (p.60)
- 불용어를 추가한 이름 역시 아무런 정보도 제공하지 못한다.
Product
라는 클래스가 있다고 가정하자. 다른 클래스를ProductInfo
혹은ProductData
라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다.Info
나Data
는a
,an
,the
와 마찬가지로 의미가 불분명한 불용어다. (p.61) - 불용어는 중복이다. 변수 이름에
variable
이라는 단어는 단연코 금물이다. 표 이름에table
이라는 단어도 마찬가지다.NameString
이Name
보다 뭐가 나은가?Name
이 부동소수가 될 가능성이 있던가? 그렇다면 앞서 언급한"그릇된 정보를 피하라"
규칙을 위반한다. (p.61) - 발음하기 쉬운 이름을 사용하라 (p.62)
- 검색하기 쉬운 이름을 사용하라 (p.63)
- 문제 해결에 집중하는 개발자에게 인코딩은 불필요한 정신적 부담이다. 인코딩한 이름은 거의가 발음하기 어려우며 오타가 생기기도 쉽다. (p.64)
- 특정 문화에서만 사용하는 농담은 피하는 편이 좋다. 의도를 분명하고 솔직하게 표현하라. (p.68)
- 프로그래머는 코드를 최대한 이해하기 쉽게 짜야 한다. 집중적인 탐구가 필요한 코드가 아니라 대충 훑어봐도 이해할 코드 작성이 목표다. 의미를 해독할 책임이 독자에게 있는 논문 모델이 아니라 의도를 밝힐 책임이 저자에게 있는 잡지 모델이 바람직하다. (p.69)
- 코드를 읽을 사람도 프로그래머라는 사실을 명심힌다. 그러므로 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다. (p.69)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 새로운 컨텐츠를 개발할 때, 처음에 아무런 의미 없는 이름(
Potato
처럼..)으로 작업을 시작한 뒤에 나중에 기획에서 테이블에 대한 부분이 정리 됐을 때 기획서에 명시된 용어를 그대로 반영하는 식으로 작업을 했던 경우가 있었다. 이름을 고민하는 시간을 줄이고자 했던 부분도 있었지만 무엇보다 기획 문서와 코드간에 용어를 통일하고자 생각했던 것이다. 하지만 프로그래머가 기존 구현된 내용을 파악할 때 기획서를 찾아보기 보다는 코드를 분석하는 경우가 더 많다는 생각이 들었다. 심지어 기획서는 처음 기획 이후에 기능이 추가되더라도 문서가 갱신되지 않는 경우도 많다. 코드를 읽을 사람도 프로그래머.. 명심하자. - 언리얼 코딩 스탠다드를 따르다보면 변수나 함수는 모두
PascalCase
로 통일 시키지만 클래스의 이름은AActor
를 상속으면A
를 앞에 붙인다던가,Interface
는I
를 붙인다던가(블루프린트 노출하는Interface
는U
가 붙은 클래스도 함께..), 그 외에는U
를 붙인다던가, 슬레이트는S
를 붙인다던가.. 하는 본문에서 얘기한인코딩
이 꼭 붙어야한다. 하지만 이 부분은UHT
에서 코드를 자동 생성할 때 사용되는 부분이라 코드를 읽을 프로그래머를 위한게 아니라 코드를 읽을UHT
를 위한 부분이기도 하니 어쩔수 없는 부분 아닐까..? - 최근에 작업하면서 배열에는
List
, 맵에는Map
을 변수이름에 넣으면서 작성한 적이 있는데, 아무래도List
인 경우와Map
인 경우에 호출하는 메서드의 이름이 같지 않기 때문에 그렇게 인코딩을 넣었던 것인데, 실제 사용할 때는 동일한 형태로 사용되는 경우도 있기도 하고,Container
라는 판단은 인코딩이 없어서 알 수 있으니 인코딩이 필요한 부분은 아닌것 같다. 제거해야겠다. - 코드 리뷰를 진행하던 팀에 있을 때, 변수 이름을 얘기하면서 리뷰를 진행하기도 하기 때문에 발음하기 쉬운 이름을 사용하는 것은 의외로 중요한 부분이아닐까 싶다. 본문에서 말했던
genymdhms
를 리뷰하는 상황에 처한다면 그 시점에 리뷰는 끝나지 않을까..