좋은 이름을 짓는데는 그만큼 시간을 들여야 하지만, 그로써 절약할 수 있는 시간이 훨씬 많다.
각 이름은 다음 질문들에 모두 답해야한다.
존재 이유
수행 기능
사용 방법
주석이 필요하다면 그만큼 이름에서 의도를 분명히 하지 못한 것이다.
그릇된 정보를 피하라
서로 흡사한 이름은 피해라
일관성이 떨어지는 표기법은 그릇된 정보다
의미있게 구분해라
불용어 사용을 피해라
같은 표현을 반복하거나 불필요한 단어는 아무런 의미도 없고 부가적인 정보도 제공해주지 못한다. ex) ~Data, ~Info ...
발음하기 쉬운 이름을 사용해라
사람들은 단어에 능숙하기 때문
검색하기 쉬운 이름을 사용해라
예를들어 'e'를 변수로 사용했다고 가정했을 때, 대부분의 단어에서 e가 가장 많이 사용되기 때문에 탐색이 힘들어진다.
따라서, 이름의 길이가 복잡할수록 찾기가 쉽다.
이름의 길이는 사용되는 범위 크기에 비례해야 한다. (로컬 변수는 e와 같은 간단한 문자를 써도 크게 치명적이지 않다는 의미인듯)
인코딩을 피하라
자신의 기억력을 자랑하지 마라
클래스 이름
명사나 명사구를 사용
Manager, Data, Info 등은 피한다.
동사를 사용하지 않는다.
메서드 이름
동사나 동사구를 사용
접근자, 변경자, 조건자 등은 javabean 표준에 따라 get, set, is를 붙인다.
생성자를 중복 정의할때는 정적 팩토리 메서드를 활용한다.
기발한 이름은 피해라
가끔 재치나 농담을 섞는 경우가 있다고 함
한 개념에 한 단어를 사용해라
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
메서드 이름은 독자적이고 일관적이어야 한다.
일관성 있는 어휘를 사용한다.
결론
당연하겠지만, 생각보다는 명쾌한 결말이 없는 느낌이다..ㅋㅋㅋㅋ
대부분 지키고 있던 룰이었는데, 내 개인적인 취향과 조금 달랐던 부분도 있었다.
하지만 협업을 위해 취향따위 버릴 수 있기 때문에, 대부분의 사람들이 이해할 수 있고 선호하는 방식을 조금 더 연구해볼 생각이다!