소프트웨어에서 이름은 어디나 쓰인다. 이름을 잘 지으면 여러모로 편하다. 이 장에서는 이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다.
int d; // 경과 시간 (단위: 날짜)
이름 d는 아무 의미도 드러나지 않는다. 경과 시간이나 날짜라는 느낌이 안든다. 측정하려는 값과 단위를 표현하는 이름이 필요하다.
int elapsedTimeInDays;
int daysSinceCreation;
...
...
의도가 드러나는 이름을 사용시 코드 이해와 변경이 쉬움
public List<int[]> getThem(){
List<int[]> list1 = new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] == 4)
list1.add(x);
return list1;
}
코드가 하는 일을 짐작하기 어려움, 코드 맥락이 코드 자체에 명시적으로 드러나지 않고 있음
public List<Cell> getFlaggedCells(){
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
코드에 정보 제공을 충분히 하자
실제 컨테이너가 List 인 경우라도 유형을 이름에 넣지 않는 편이 바람직하다.
나쁜 예시
public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i< a1.length; i++) {
a2[i] = a1[i];
}
}
좋은 예시
public static void copyChars(char source[], char destination[]) {
for (int i = 0; i< a1.length; i++) {
destination[i] = source[i];
}
}
불분명한 불용어는 사용하지 않아야 한다.
나쁜 예시
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint = "102";
};
좋은 예시
class Customer {
private Date generationTimeStamp;
private Date modificationTimeStamp;
private final String rdcordId = "102";
};