변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. ( 의도를 분명히 하라. ) <p.22>
변수(혹은 함수나 클래스)의 존재 이유는?
변수(혹은 함수나 클래스)의 수행 기능은?
변수(혹은 함수나 클래스)의 사용 방법은?
프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. ( 그릇된 정보를 피하라. ) <p.24>
나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다.
서로 흡사한 이름을 사용하지 않도록 주의한다.
유사한 개념은 유사한 표기법을 사용한다. 이것도 정보다. 일관성이 떨어지는 표기법은 그릇된 정보다.
컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어(noise word)를 추가하는 방식은 적절하지 못하다. 이름이 달라야 한다면 의미도 달라져야 한다. ( 의미있게 구분하라. ) <p.26>
고객 급여 이력을 찾으려면 어느 클래스를 사용해야할까?
moneyAmount와 money는 구분이 안된다. 읽는 사람이 차이를 알도록 이름을 지어라.
말을 처리하려고 발달한 두뇌를 활용하지 않는다면 안타까운 손해다. 그러므로 발음하기 쉬운 이름을 선택한다. ( 발음하기 쉬운 이름을 사용하라. ) <p.27>
문자 하나를 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않는다는 문제점이 있다. ( 검색하기 쉬운 이름을 사용하라. ) <p.28>
검색이 어려운 짧은 단어들이라는 관점에서 긴 이름이 짧은 이름보다 좋다. 검색하기 쉬운 이름이 상수보다 좋다.
이름 길이는 범위 크기에 비례해야 한다.
굳이 부담을 더하지 않아도 이름에 인코딩할 정보는 아주 많다. ( 인코딩을 피하라. ) <p.29>
똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타나는 차이점 하나만 들자면, 전문가 프로그래머는 명료함이 최고라는 사실을 이해한다. ( 자신의 기억력을 자랑하지 마라. ) <p.31>
클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
Customer, WikiPage, Account, AddressParser (O)
Manager, Processer, Data, Info (X)
메서드 이름은 동사나 동사구가 적합하다.
PostPayment, deletePage, save (O)
Accessor, Mutator, Predicate는 javabean표준에 따라 값 앞에 get, set, is를 붙인다. (getName, setName)
생성자를 중복정의 할 때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름을 사용한다.
기발한 이름은 피하고 명료한 이름을 선택하라. <p.32>
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 예를 들어, 똑같은 메서드를 클래스마다 fetch, retrieve, get으로 제각각 부르면 혼란스럽다. ( 한 개념에 한 단어를 사용하라. ) <p.33>
한 단어를 두 가지 목적으로 사용하지 마라. 다른 개념에 같은 단어를 사용한다면 그것은 말장난에 불과하다. ( 말장난을 하지 마라. )
모든 이름을 문제 영역에서 가져오는 정책은 현명하지 못하다. 같은 개념을 다른 이름으로 이해하던 동료들이 매번 고객에게 의미를 물어야하기 때문이다. ( 해법 영역에서 가져온 이름을 사용하라. ) <p.34>
적절한 '프로그래머 용어'가 없다면 문제 영역에서 이름을 가져온다. ( 문제 영역에서 가져온 이름을 사용하라. ) <p.34>
함수 이름은 맥락 일부만 제공하며, 알고리즘이 나머지 맥락을 제공한다. ( 의미 있는 맥락을 추가하라. ) <p.35>
일반적으로 짧은 이름이 긴 이름보다 좋다. 단, 의미가 분명한 경우에 한해서다, 이름에 불필요한 맥락을 추가하지 않도록 주의한다. ( 불필요한 맥락을 없애라. ) <p.37>
암기는 요즘 나오는 도구에게 맡기고, 우리는 문장이나 문단처럼 읽히는 코드 아니면 적어도 표나 자료 구조처럼 읽히는 코드를 짜는 데만 집중해야 마땅하다. <p.38>
변수 이름을 생각하는 것은 게임 속 캐릭터 이름을 짓는 것 이상으로 힘들다. 게임 속 캐릭터는 단 하나만 지으면 되는 반면에 변수는 수십개 많개는 수백개에 이르기 때문이다.
올바른 변수 이름은 무엇인가? 클린 코드에 다가가기 위한 첫 걸음은 적합한 변수 이름 설정이라는 것을 알았다.
적절한 예제와 원칙들은 나에게 변수 이름 설정의 중요함과 효용성을 알려주었다.
변수 이름 설정의 원칙과 원리를 이해하고 있는다고 알맞은 변수 이름을 설정해낼 수 있는 것은 아니다. 결론은 실전 연습이다. 계속해서 수많은 변수들을 만들게 될 것이고 그 떄마다 이 원칙들을 복기할 것이다.
적절한 변수 이름은 클린 코드에 귀결된다.