[리뷰] 클린코드 2장 의미 있는 이름
의도를 분명히 밝혀라
좋은 이름으로 많은 시간을 절약할 수 있다.
이름은 다음의 질문을 모두 표현해야 한다.
- 변수(함수나 클래스)의 존재 이유
- 수행 기능
- 사용 방법
따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다.
ind d; // 경과 시간(단위:날짜)
위의 d를 측정하려는 값과 단위를 표현하는 이름을 짓는 것이 더 좋다.
그릇된 정보를 피하라
이름이 의미가 다르게 해석될 수 있는지 생각해 보자 hp라는 변수는 빗변(hypotenuse)를 표현하기 좋아 보일 수도 있으나
유닉스의 변종을 가리키는 이름이다.(나는 캐릭터 체력이 생각난다.)
실제로 List가 아니면 이름에 List를 넣지 말아라
비슷한 이름을 사용하지 말아라(구별하기 힘들다.)
의미 있게 구분하라
money와 moneyAmount
customer와 customerinfo
acoount와 accountdata
위의 이름들을 보고 어떤 차이를 느낄 수 있을까?
아니다. 이름을 지을 때는 차이점을 명확하게 알도록 지어야 한다.
발음하기 쉬운 이름을 사용하라
발음하기 어려운 이름은 토론하기도 어렵다.
발음하기 쉬워야 의미도 쉽게 알 수 있다.
검색하기 쉬운 이름을 사용하라
만약 e로 이름을 지었다고 하자
거의 대부분에 영어 단어는 e를 사용함으로 e가 포함된 이름들이 전부 검색된다.
간단한 메서드에서 로컬 변수만 한문자를 사용한다.
이름 길이는 범위 크기에 비례해야 한다.
자신의 기억력을 자랑하지 마라
이 변수가 무엇을 의미하는지 본인은 해석할 수 있어도 다른 사람은 자신이 아는 이름으로 변환한다.
클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
매서드 이름
매서드 이름은 동사나 동사구가 적합하다.
기발한 이름은 피하라
웃긴 이름을 지을 수 있지만 결국 다른사람은 해석하지 못한다.
한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
예를 들어 get, fetch, retrieve들로 제각각 부르면 혼란스럽다.
말장난을 하지 마라
프로그래머는 같은 맥락이 아닌데도 일관성을 고려해 같은 이름을 사용한다.
지금까지 모든 add라는 메서드가 두 개의 값을 더하는 일을 하다가
집합에 새로운 값 하나를 추가하는 것도 add라 이름을 짓는다면 이것은 말장난이다.