책 리뷰/클린코드
클린코드 - 2장
eess
2024. 8. 19. 14:22
🔖 2장 : 의미 있는 이름
읽은 날짜 : 2024.08.19
지은이 : 로버트 C. 마틴
출판사 : 인사이트
기억하고 싶은 내용
이름을 잘 짓는 방법
1. 의도를 분명하게 밝히기
- 변수, 함수, 클래스 이름으로 존재 이유, 수행 기능, 사용 방법을 드러낼 수 있어야 한다.
- 따로 주석이 필요하다면 의도가 분명하게 드러나지 않은 것이다.
- 코드 맥락이 코드 자체에 명시적으로 드러나야 한다.
// Bad
int d; // 경과 시간(단위: 날짜)
// Good
int daysSinceCreation;
int daysSinceMotdification;
2. 코드 의미를 흐리는 잘못된 정보를 남기지 않기
- 널리 쓰이는 의미 있는 단어를 다른 의미로 사용하면 안 된다.
- 컨테이너 유형을 이름에 넣지 않는 것이 좋다.
- accountList ➡️ accounts
3. 의미 있게 구분하기
- 검색 가능한 이름을 사용하자.
- 연속된 숫자를 덧붙이는 것은 피하자.
- 불용어를 피하자. 대체로 의미를 불분명하게 만든다.
- 관사(a, an, the)
- xxxInfo, xxxData, xxxObject
- 변수 이름에 variable, 표 이름에 table
4. 발음하기 쉬운 이름 사용하기
- 발음하기 어려우면 업무적으로 토론하기도 어렵다.
- 프로그래밍은 사회활동이기 때문에 발음하기 쉬워야 한다.
5. 접두어 피하기
- 멤버 변수에 'm_'을 붙이거나, 인터페이스에 'I'을 붙이지 말자.
- 접두어는 주의를 흐트리고, 과도한 정보를 제공한다. (차라리 구현체 이름에 접미어 Imp를 붙여라.)
6. 클래스와 객체 이름은 명사(구)
7. 메서드 이름은 동사(구)
- 접근자/변경자/조건자는 get/set/is를 붙인다.
8. 기발한 이름은 피하기
- 재미난 이름보다 명료한 이름이 좋다.
- 특정 문화에서만 사용하는 농담도 피하는 것이 좋다.
9. 한 개념에 한 단어 사용하기
- 메서드 이름은 독자적이고, 일관적이어야 한다.
- fetch, retrieve, get ➡️ 어떤 걸 쓸 것인가?
10. 한 단어를 두 가지 목적으로 사용하지 않기
- add, append, insert ➡️ 맥락에 따라 구분해서 쓰는 것이 좋다.
11. 기술 개념 & 도메인 영역을 구분하기
- 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다.
- 도메인과 관련이 깊다면 도메인 영역에서 이름을 가져온다.
오늘 읽은 소감
이름을 정할 때는 적절한 정보를 제공하여 의미와 의도를 분명히 하는 것이 핵심이라는 것을 알게 되었습니다.
특히 2번, 3번, 5번, 9번, 10번은 프로젝트에 적용해서 리팩토링을 해보고 싶어졌습니다.
궁금한 내용 & 잘 이해되지 않는 내용
❌