클린코드 2장 - 의미 있는 이름
❗의도를 분명하게 밝혀라 / 그릇된 정보를 피하라
좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 많다
변수나 함수, 클래스가 존재하는 이유와 수행 기능, 사용 방법에 대한 것을 따로 주석으로 작성해야 한다면 의도를 분명하게 드러내지 못했다는 것이다
그릇된 단서는 코드의 의미를 흐리기 때문에 남겨서는 안 된다
나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안 된다
일관성이 떨어지는 정보도 그릇된 정보다.
❗의미 있게 구분하라
컴파일러나 인터프리터만을 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다
컴파일러를 통과할지라도 연속된 숫자를 덧붙이거나 불용어(noise word)를 추가하는 방식은 적절하지 못하다
읽는 사람이 차이를 알도록 이름을 짓는 것이 중요하다
❗발음하기 쉬운 이름을 사용하라 / 검색하기 쉬운 이름을 사용하라
발음하기 어려운 이름은 토론하기도 어렵다
프로그래밍도 일종의 사회 활동이다
문자 하나만을 사용하는 이름과 상수는 텍스트 코드에서 쉽게 눈에 띄지 않기 때문에 명시적으로 작성해야 한다
❗클래스 이름 / 메소드 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다
메소드 이름은 동사나 동사구가 적합하다.
접근자, 변경자, 조건자는 javabean 표준에 따라 get, set, is를 붙인다
❗한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택해서 이를 고수한다
일관성 있는 어휘는 코드를 사용할 프로그래머가 반갑게 여길 선물이다
❗불필요한 맥락을 없애라
일반적으로는 짧은 이름이 긴 이름보다 좋지만 의미가 분명한 경우에서기 때문에 이름에 불필요한 맥락을 추가하지 않도록 해야한다
❗2장 읽은 소감
단순히 변수를 잘 쓰는 것은 명시적으로만 쓰면 된다고 생각했지만 그것보다 더욱 더 생각해볼 것이 많았던 것 같다. 의도뿐만 아니라 잘못된 정보를 넣지 않는 것도 중요했고, 발음 또한 생각해봐야할 요소라는 것에 놀랐다. 이제까지는 의미에 관련된 것만이 변수를 제대로 작성하는 법이라고 생각했는데 개발자들이 읽기 쉬운 발음까지 고민을 해야하는 것을 새롭게 배운 것 같다.
// Bad
private void printGuessStatistics(char candidate, int count) {
String number;
String verb;
String pluralModifier;
if (count == 0) {
number = "no";
verb = "are";
pluralModifier = "s";
} else if (count == 1) {
number = "1";
verb = "is";
pluralModifier = "";
} else {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
String guessMessage = String.format("There %s %s %s%s", verb, number, candidate, pluralModifier );
print(guessMessage);
}
// Good
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, pluralModifier );
}
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 = "s";
}
}
'🔻Extracurricular Activity > IT’s TIME(잇타)' 카테고리의 다른 글
[잇타] 클린코드 스터디 4주차 (0) | 2022.10.01 |
---|---|
[잇타] 클린코드 스터디 3주차 (0) | 2022.09.27 |
[잇타] 클린코드 스터디 1주차 (0) | 2022.09.17 |