Clean Code : 의미 있는 이름
개발하다 보면 많이들 공감하겠지만 이름 짓는 게 참으로 어려운 일이다
이름을 짓는 일은 사실 컴파일러에겐 영향이 없다
하지만 그럼에도!!!
코딩을 하는 나와 이 코드를 사용할 동료에게 매우 중요하다
간단, 명료, 통일성을 가지고
모두가 직관적으로 알 수 있는 단어를 선택하는것이 응당하다
이름을 명확히 지을때 생각할 것
1. 의도를 분명히 밝혀라
변수, 함수, 클래스 이름으로 의도를 밝혀라
- 존재 이유?
- 수행 기능?
- 사용 방법?
- (주석이 없어도 알 수 있게)
아래 같은 변수 이름을 피해라
- list
- d
2. 그릇된 정보를 피하라
프로그래머에게 어떤 특수한 정보를 제공하는 단어를 남발하지 마라
- list 같은
다른 의도로 헷갈리게 한다
유사한 개념은 유사한 표기법을 사용한다
소문자 L과 대문자 O를 사용하지 마라
처음부터 오해할 소지를 만들지 않는 게 직관성을 부여한다
3. 의미 있게 구분하라
a1, a2, a3 등의 변수를 사용하지 마라
무슨 의미인지 어떤 용도인지 전혀 알 수 없다
coopyChar 같은 함수의 매개변수에는 source, destination 같이 의미를 알 수 있게 하자
Data, Info 같은 단어도 사용하지 마라
매우 유연하고 불분명한 의미를 갖는다
비슷한 의미들이 있는 경우라도 최대한 읽는 사람이 차이를 알도록 이름을 지어라
4. 발음하기 쉬운 이름을 사용하라
사람은 본능적으로 발음하기 쉬운 단어를 쉽게 이해한다
5. 검색하기 쉬운 이름을 사용하라
이름 길이는 범위 크기에 비례해야 한다
그래야 원하는 값의 검색이 쉽다
간단한 로컬 변수에만 짧은 단어를 사용하자
상수보단 상수 변수를 사용해야 나중에 검색하기 쉽다
- 예) WORK_DAYS_PER_WEEK = 5
6. 인코딩을 피하라
옛날 방식의 이름(헝가리식 표기)을 사용하지 마라
(이름 자체에 타입 정보를 넣지 마라)
인터페이스 클래스와 구현 클래스를 명확히 구분하기 힘든 경우
인터페이스 클래스를 Default로 이름을 짓고
구현 클래스는 부 이름으로 지어라
- 예) ShapeFactory (interface), ShapeFactoryImpl
7. 자신의 기억력을 자랑하지 마라
범위가 작은 반복 변수는 i, j, k로 써도 된다(l은 안된다)
의미가 명확한 단어를 사용하자
8. 클래스 이름
명사나 명사구를 사용하자
Manager, Processor, Data, Info 등의 유연한 단어는 피하자
9. 메서드 이름
동사나 동사구가 적합하다
javabean 표준에 따라
get, set, is 같은 통일된 이름을 사용하자
생성자 등을 overload 할 경우, 사용할 인수를 설명하는 이름을 쓰자
- 예) Complex fulcrumPoint = Complex.FromRealNumber(23.0);
new Complex(23.0)
10. 기발한 이름은 피하라
특정 문화에서만 이용하는 말장난, 속어 등을 피해라
11. 한 개념에 한 단어를 사용하라
Controller, Manager 같은 단어는 이해하기 힘들다
fetch, retrieve, get 등도 마찬가지다
전체 코드에서 한 가지 의미로 통일할 수 있도록 하자
12. 말장난을 하지 마라
한 단어를 두 가지 목적으로 사용하지 마라
- 예) add : 두 개의 값을 더함, 리스트에 추가함
리스트에 추가할 경우 insert나 append 등의 이름을 사용하도록 변경해야 함
13. 해법 영역에서 가져온 이름을 사용하라
프로그래머에게 익숙한 기술 개념은 사용해도 괜찮다
queue 등등
14. 문제 영역에서 가져온 이름을 사용하라
적절한 용어가 없을 경우 해당 분야의 이름을 그대로 사용해도 괜찮다
의료 기기, 생물학 등등
15. 의미 있는 맥락을 추가하라
클래스, 함수, 이름 공간을 이용해 맥락을 부여하는 게 힘들 수도 있다
그런 경우에는 최후의 수단으로 접두어를 사용하자
- 예) addrFirstName, addrLastName 등
큰 함수는 클래스 등을 이용해 쪼개면 더 읽기 편하다
16. 불필요한 맥락을 없애라
모든 클래스에 같은 접두어를 부여하면 자동 완성에서도 사용하기 힘들다
중복된 접두어를 피하도록 하자
이번 장은 종종 읽으면 좋을 것 같아서 최대한 간단명료하게 정리하였다
사람의 이름도 그렇듯이 이름의 힘은 강하다는 것을 잊지 말자
'Cooperation' 카테고리의 다른 글
Clean Code - 함수 (0) | 2021.08.01 |
---|---|
Agile (0) | 2021.07.30 |
Clean Code - 깨끗한 코드 (0) | 2021.07.24 |
Clean Code - 추천사 (1) | 2021.07.23 |
개발 문화 (0) | 2021.07.18 |