2장은 의미있는 이름에 대해 이야기를 하고 있다. 우리는 변수, 함수, 인수, 클래스, 패키지, 소스파일, 디렉토리, war, jar 등등 많은 곳에 이름을 붙이고 있는데 이 이름을 잘 지으면 여러모로 편하다는 것과 몇가지 규칙을 소개하고 있다.
의도가 분명한 이름을 지으면 절약하는 시간이 많아질 것이고 자신을 포함한 코드를 읽는 사람이 행복해질 것이라고 말하고 있다.
변수, 함수, 클래스 등의 이름은 다음과 같은 질문에 모두 답할 수 있어야 한다.
따로 주석이 필요하다면? 의도를 분명히 드러내지 못한 것이다.
int a;
int b;
String age = "김형욱";
int elapsedTimeDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays
코드 맥락이 코드 자체에 명시적으로 드러나지 않는다. 이 코드는 코드를 읽는 사람이 다음과 같은 정보를 안다고 가정해야지 코드의 의도를 파악할 수 있다.
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.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}