※ 본 글은 인사이트
에서 출간한 로버트 C. 마틴
저자의 『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신』
책을 읽고 작성하였습니다.
2장. 의미있는 이름
소프트웨어에서 이름은 어디나 쓰임
변수
, 함수
, 인자
, 클래스
, 패키지
, 소스파일
, 심지어 소스파일이 담긴 디렉토리
등등
→ 이렇게나 많이 사용하므로 이름을 잘 지으면 여러모로 편리함.
이름을 잘 짓는 간단한 규칙에 대한 학습을 시-작!!
의도를 분명히 밝혀라
좋은 이름으로 절약하는 시간
이 훨씬 더 많음.이름을 주의 깊게 살펴
더 나은 이름이 떠오르면 개선할 것.코드를 읽는 사람이 좀 더 행복
해 질 수 있음.변수/함수/클래스
의 이름
은 존재 이유/수행 기능/사용 방법
과 같은 질문에 답할 수 있어야 함.그릇된 정보를 피하라
그릇된 단서
를 남겨서는 안됨널리 쓰이는 의미가 있는 단어
를 다른 의미로 사용해도 안됨. (e.g. list
)서로 흡사한 이름
을 사용하지 않도록 주의할 것유사한 개념
은 유사한 표기법을 사용하고 이것도 정보에 해당됨.일관성이 떨어지는 표기법
은 그릇된 정보임.의미 있게 구분하라
a1
, a2
, …, aN
)은 그릇된 정보를 제공하는 이름도 아니고, 아무런 정보를 제공하지 못하는 이름일 뿐, 저자 의도가 전혀 드러나지 않음.불용어를 추가한 이름
역시 아무런 정보도 제공하지 못함.a
나 the
같은 접두사
이더라도 의미가 분명히 다르다면 사용해도 무방.읽는 사람이 차이를 알도록
이름을 붙여라getctiveAcount()
, getctiveAcounts()
, getctiveAcountInfo()
발음하기 쉬운 이름을 사용하라
발음하기 쉬운 이름
을 선택하는 것이 좋음.검색하기 쉬운 이름을 사용하라
긴 이름
이 짧은 이름보다 좋고, 검색하기 쉬운 이름
이 상수보다 좋음.이름 길이
는 범위 크기
에 비례
해야 하며, 변수
나 상수
를 코드 여러 곳에서 사용한다면 검색하기 쉬운 이름
이 바람직함.인코딩을 피하라
자신의 기억력을 자랑하지 마라
자신이 아는 이름
으로 변환해야 한다면 그 변수 이름은 바람직하지 않음.루프
에서 반복 횟수를 세는 변수
는 문자 하나
만 사용해도 괜찮음.클래스 이름
클래스 이름
과 객체 이름
은 명사
나 명사구
가 적합함.Customer
, WikiPage
, Account
, AddressParser
Manager
, Processor
, Data
, Info
등과 같은 단어.메서드 이름
메서드 이름
은 동사
나 동사구
가 적합.
- 좋은 예 :
postPayment
,deletePage
,save
등- 접근자(Accessor), 변경자(Mutator), 조건자(Predicate)는
javabean 표준
에 따라 값 앞에get
,set
,is
를 붙임.
생성자(Constructor
)를 중복정의(overload
)할 때는 정적 팩토리 메서드를 사용함.
→ 메서드
는 인수를 설명하는 이름
을 사용
함.
기발한 이름은 피하라
명료한 이름
을 선택
하라.한 개념에 한 단어를 사용하라
- 예를 들어, 객체를 사용하면 그 객체가 제공하는 메서드 목록을 보여줌.
- 하지만 목록은 보통 함수 이름과 매개변수만 보여줄 뿐 주석은 보여주지 않음.
메서드 이름
은 독자적
이고 일관적
이어야 함.말장난을 하지 마라
대충 훑어봐도 이해할 코드 작성
이 목표임.해법 영역에서 가져온 이름을 사용하라
전산 용어
, 알고리즘 이름
, 패턴 이름
, 수학 용어
등은 사용해도 괜찮음.문제 영역에서 가져온 이름을 사용하라
문제 영역
에서 이름
을 가져올 것.우수한 프로그래머와 설계자
라면 해법 영역
과 문제 영역
을 구분
할 줄 알아야 함.의미 있는 맥락을 추가하라
불필요한 맥락을 없애라
Gas Station Deluxe
) 라는 애플리케이션
을 짠다고 가정.GSD
로 시작하게 된다면 IDE에서 G를 입력하고 자동완성 키를 누르는 순간 모든 클래스를 열거하기 때문에 현명하지 못함.의미가 분명한 경우
에 한해 짧은 이름
이 긴 이름보다 좋음
.accountAddress
와 customerAddress
는 Address
클래스의 인스턴스로는 좋은 이름이나, 클래스 이름으로 적합하지 못함.마치면서
설명 능력이 뛰어나야
하고 문화적 배경이 같아야
함좋은 이름을 선택하는 능력
은 기술, 비즈니스, 관리 문제가 아닌 교육 문제
임