[Clean Code] 2장. 의미있는 이름

CLEAN CODE

  • 로버트 C.마틴 지음

의미있는 이름

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

  • Clean Code (로버트 C.마틴)