2. 의미있는 이름 �이름을 잘 짓는 것이 중요하며, 관련 규칙을 소개한다
의도를 분명히 밝혀라
int d; // 경과 시간(단위: 날짜)
int elapsedTimeInDays;
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<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<int[]>();
for (int[] cell: gameBoard)
if (cell[STATUS_VALUE] = FLAGGED)
flaggedCells.add(cell);
return flaggedCells;
}
의도를 분명히 밝혀라
public List<Cell> getFlaggedCells(){
List<Cell> flaggedCells = new ArrayList<Cell>();
for (Cell cell : gameBoard)
if (cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
public List<int[]> getThem() {
List<int[]> list1= new ArrayList<int[]>();
for (int[] x : theList)
if (x[0] = 4)
list1.add(x);
return list1;
}
그릇된 정보를 피하라
의미 있게 구분하라
의미 있게 구분하라
public static void copyChars(char a1[], char a2[]) {
for (int i = 0; i < al.length; i++) {
a2[i] = al[i];
}
} �함수 인수 이름으로 source와 destination을 사용하면 코드 읽기가 쉬워진다.
발음하기 쉬운 이름을 사용하라
class DtaRcrd102 { private Date genymdhms; private Date modymdhms; private final String pszqint="102"; /* ... */ }; VSclass Customer { private Date generationTimestamp; private Date modificationTimestamp; private final String recordId="102"; /* ... */ };
�
class DtaRcrd102 { private Date genymdhms; private Date modymdhms; private final String pszqint="102"; /* ... */ }; VSclass Customer { private Date generationTimestamp; private Date modificationTimestamp; private final String recordId="102"; /* ... */ };
�
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint="102";
/* ... */
};
와
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
private final String recordId="102";
/* ... */
};
검색하기 쉬운 이름을 사용하라
검색하기 쉬운 이름을 사용하라
for (int j=0; j<34; j++) {
s += (t[j]*4)/5;
}
와
int realDaysPerIdealDay = 4;
const int WORK_DAYS_PER_WEEK= 5;
int sum = 0;
for (int j=0; j < NUMBER_OF_TASKS; j++){
int realTaskDays = taskEstimate[j]* realDaysPerIdealDay;
int realTaskweeks = (realTaskDays / WORK_DAYS_PER_WEEK);
sum += realTaskWeeks;
}
헝가리식 표기법과 인코딩
멤버 변수 접두어
public class Part {
private String m_dsc; // 설명 문자열
void setName(String name) {
m_dsc = name;
}
}
public class Part {
String description;
void setDescription(String description) {
this.description = description;
}
}
인터페이스 클래스와 구현 클래스
자신의 기억력을 자랑하지 마라
클래스 이름과 메서드 이름
기발한 이름은 피하라
의도를 분명하고 솔직하게 표현하라
말장난을 하지 마라
해법 영역에서 가져온 이름을 사용하라
문제 영역에서 가져온 이름을 사용하라
의미 있는 맥락을 추가하라
의미 있는 맥락을 추가하라
목록 2-1 맥락이 불분명한 변수
private void printGuessStatistics (char candidate, int count) {
String number;
String verb;
String pluralModifier;
if (count = 0) {
number = "no";
verb = "are";
pluralModifier= "";
} else if (count = 1) {
number = "1";
verb = "is";
pluralModifier = "";
} else {
}
number = Integer.toString(count);
verb = "are";
plura Modifier = "s";
String guessMessage = String.format(
"There %s %s %s%s", verb, number, candidate, pluralModifier
);
print(guessMessage);
}
의미 있는 맥락을 추가하라
목록 2-2 맥락이 분명한 변수
public class GuessStatisticsMessage {
private String number;
private String verb;
private String pluralModifier;
public String make (char candidate, int count) {
createPluralDependentMessageParts (count);
return String.format(
"There %s %s %s%s",
verb, number, candidate, plura Modifier );
}
private void createPluralDependentMessageParts (int count) {
if (count = 0) {
thereAreNoLetters();
} else if (count = 1) {
thereIsOneLetter();
} else {
thereAreManyLetters(count);
}
}
private void thereAreManyLetters (int count) {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
private void thereIsOneLetter() {
number = "1";
verb = "is";
pluralModifier = "";
}
private void thereAreNoLetters() {
number = "no";
verb = "are";
pluralModifier = "";
}
}
불필요한 맥락을 없애라
마치면서