public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i < a1.length; i++) {
a2[i] = a1[i];
}
}
Ex)
product
라는 클래스가 있다고 가정하자.
이 때, 다른 클래스를 productInfo
, productData
라 부른다면 개념을 구분하지 않은 채 이름만 달리한 경우다.
→ 이런 경우 Info
나 Data
는 a,an, the
와 마찬가지로 의미가 불분명하다.
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
이러한 변수명은 나 말고 다른 프로그래머는 차이를 느끼지 못한다.
구분이 힘든 변수명은 지양하고, 읽는 사람이 차이를 알도록 지어라.
독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다.
똑똑한 프로그래머와 전문가 프로그래머 사이에서 나타는 차이점 하나만 들자면, 전문가는 명료함이 최고라는 사실을 이해한다. 전문가는 남들이 이해하는 코드를 내놓는다.
<클래스 이름>
클래스 + 객체 이름은 명사 또는 명사구가 적합하다.
Ex)
좋은 예 : Custion, WikiPage, Account, AddressParser
나쁜 예 : Manager, Processor,Data,Info
<메서드 이름>
동사나 동사구가 적합하다.
좋은 예 : postPayment, deletePage, save
접근자, 변경자, 조건자는 javabean 표준에 따라 get, set, is
를 붙힌다.
추상적인 개념 하나에 단어 하나를 선택해 이를 고수하라
Ex)
똑같은 메서드를 클래스마다 fetch, get, retrieve
으로 제각기 부르면 혼란스럽다.
메서드 이름은 독자적이고 일관적이어야 한다.
그래야 주석을 뒤져보지 않고도 프로그래머가 올바른 메서드를 선택한다.
또한 동일 코드 기반에 controller, manager, driver
를 섞어쓰면 혼란 스럽다.
일관성 있는 어휘는 코드를 사용할 프로그래머가 반갑게 여길 선물이다.