클린 코드 - 2장 의미 있는 이름
- 의도를 분명히 밝혀라
- 좋은 이름을 지으려면 시간이 걸리지만 그로 인해 절약하는 시간이 훨씬 더 많다.
- 이름을 통해 존재 이유, 수행 기능, 사용 방법에 대한 답을 해야 한다.
- 그릇된 정보를 피하라
- 나름대로 절리 쓰이는 의미 있는 단어를 다른 의미로 사용하면 안된다.
- 실제 List가 아니라면 accountList라는 식으로 네이밍하지 않는다. accountGroup, bunchOfAccounts, Accounts 식으로 네이밍한다.
- 혼동할 수 있기 때문에 서로 흡사한 이름을 사용하지 않는다.
- 의미 있게 구분하라
- 연속된 숫자를 덧붙이거나 특별한 정보를 주지 못하는 Info, Data, variable 같은 단어를 추가하는 방식은 적절하지 않다.
- 발음하기 쉬운 이름을 사용하라
- 발음하기 어려운 이름은 토론하기도 어렵다.
- 검색하기 쉬운 이름을 사용하라
- 한 문자로 이루어진 이름, 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다.
- MAX_CLASSES_PER_STUDENT는 찾기 쉽지만 숫자 7은 7이 들어가는 모든 것이 검색된다.
- 이름 길이는 범위 크기에 비례해야 한다.
- 변수 이름에 타입이나 m_같은 접두어를 붙일 필요는 없다. IDE를 사용한다면 불필요한 정보일 뿐이다.
- 인터페이스 이름에도 접두어 I를 붙이지 않는게 좋다. 구현 클래스에 Imp 접미어를 붙이는게 낫다.
- 자신의 기억력을 자랑하지 마라
- 똑똑한 사람은 자신의 정신적 능력을 과시하고 싶어하는데, 전문가 프로그래머는 명료함이 최고라는 사실을 안다.
- 기발한 이름은 피하라. 재미난 이름보다 명료한 이름을 선택하고 특정 문화에서만 사용하는 농담도 피한다.
- 한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해 일관성 있는 어휘를 사용하라.
- 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다.
- 한 단어를 두 가지 목적으로 사용하지 마라.
- 일관성을 고려한다는 이유로 한 단어를 다른 목적으로 재사용하지 말라.
- 해법 영역에서 가져온 이름을 사용하라
- 전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 좋다. 모든 이름을 문제 영역에서 가져오는 것은 현명하지 않다.
- 예를들어 VISITOR 패턴에 친숙한 프로그래머는 AccountVisitor라는 이름을 금방 이해한다.
- 적절한 프로그래밍 용어가 없다면 문제 영역에서 가져온 이름을 사용하라
- 우수한 프로그래머라면 해법 영역과 문제 영역을 구분할 줄 알아야 한다.
- 문제 영역과 관련이 깊은 코드라면 문제 영역에서 이름을 가져와야 한다.
- 의미 있는 맥락을 추가하라
- 클래스, 메서드, 네임스페이스 안에 넣어 맥락을 부여한다.
- e.g. addrFirstName, addrLastName, addrState -> Address라는 클래스 생성
- 특별한 방법이 없다면 마지막 수단으로 접두어를 붙인다.
- 하지만 GasStationDeluxe라는 애플리케이션 내 모든 클래스 이름을 GSD로 시작하는 식의 불필요한 맥락은 없애라
'개발 > 리팩토링' 카테고리의 다른 글
클린 코드 독서 노트 (0) | 2017.08.30 |
---|---|
네이밍 관련 글 정리 (0) | 2017.05.08 |
읽기 좋은 코드가 좋은 코드다 - 노트 (0) | 2017.03.18 |
자바 코드 리팩토링 시 주의해야할 점 몇 가지 (0) | 2016.11.03 |