CLEAN CODE
의미있는 이름
1. 의도를 분명히 밝혀라
- 변수, 함수, 클래스의
존재 이유
/ 수행 기능
/ 사용 방법
을 담아낼 수 있어야 한다.
2. 그릇된 정보를 피해라
- 서로 흡사한 이름 사용 지양
List
와 같이 프로그램에서 의미 있는 단어는 유의해서 사용할 것
3. 의미 있게 구분하라
4. 발음하기 쉬운 이름 사용
5. 검색하기 쉬운 이름 사용
- 변수나 상수를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름이 바람직
6. 인코딩을 피하라
- 자바의 경우 변수 이름에 타입 인코딩 불필요
- 멤버 변수 접두어
- IDE에서 색으로 구분하기 때문에 접두어 불필요해짐
- 인터페이스 클래스 & 구현 클래스
- 구현 클래스를 인코딩하길 권장 (eg. ShapeFactoryImp)
7. 클래스 이름
명사
또는 명사구
적합- Customer, Account 등이 적합
- Manager, Processor, Data, Info 는 지양
- 동사 미사용
8. 메서드 이름
9. 한 개념에 한 단어 사용
- 추상적인 개념 하나에 단어 하나
- 비슷한 것 같지만 단어를 구분해서 사용 하는 경우
add
insert
append
비슷한 의미의 단어지만 각각 본인이 써왔던 맥락과 다른 기능, 사용 방법이라면 구분해서 다른 단어들을 사용해야 한다
10. 해법 영역에서 가져온 이름 사용
- 전상 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등 사용해도 무방
- 도메인 용어를 사용할 경우 프로그래머가 알아내야 하는 수고가 늘어날 수 있다
11. 문제 영역에서 가져온 이름 사용
- 적절한
프로그래머 용어
가 없다면 도메인 용어 사용 - 도메인과 관련이 깊은 코드라면 도메인 영역에서 이름을 가져와 사용
12. 의미 있는 맥락을 추가
- 클래스, 함수, 이름 공간에 넣어 맥락을 부여
- 마지막 수단으로
접두어
를 붙여서 해결- firstName, lastName, street, .. : 주소라는 맥락 추측 가능
- 하지만, firstName만 놓고 봤을 때 주소의 일부라고 확신 불가
- —-> addrFirstName, addrLastName, … 접두어를 붙임
- 클래스, 함수 등을 생성하는 것 지향
13. 불필요한 맥락 제거
Reference