[클린코드] 5일차 - 분명한 이름을 위한 의미있는 맥락(Context) 부여, 함수는 한 가지 일만.
클린코드 5일차 (p. 35~38(2장) / 39~45(3장) )
2 의미 있는 이름
15. 의미있는 맥락을 추가하라
- 클래스, 함수, 이름 공간 등으로 감싸서 맥락을 부여.
// 맥락이 불문명한 변수
// 함수 이름은 맥락의 일부만 제공하며, 알고리즘이 나머지 맥락을 제공.
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, cadidate, pluralModifier);
print(guessMessage);
}
// 세 변수를 클래스에 넣음으로 맥락을 분명히. 세 변수를 함수 전반에서 사용.
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";
}
}
16. 불필요한 맥락을 없애라
- 일반적으로 짧은 이름보다는 긴 이름이 좋다. 단, 의미가 분명한 경우에 한해서이다.
1 의미있는 이름의 결론은..
- 좋은 이름을 선택하려면 설명 능력이 뛰어나야 하고 문화적인 배경이 같아야 한다.
- 사람들이 이름을 바꾸지 않으려는 이유 하나는 다른 개발자가 반대할까 두려워서다.
- 그렇다고 코드를 개선하려는 노력을 중단해서는 안 된다.
3 함수
- 어떤 프로그램이든 가장 기본적인 단위는 함수이다.
길이가 길고, 중복된 코드에, 괴상한 문자열에, 낯설고 모호한 자료 유형의 코드로 이루어진 함수는 이해하기에 많은 어려움이 따른다. 그렇다면 읽시 쉽고 이해하기 쉬운 함수는 어떻게 작성해야하는가?
1. 작게 만들어라!
- 함수를 만드는 첫번째 규칙은 '작게' ! / 두 번째 규칙은 '더 작게'!
- 블록과 들여쓰기
- if/else 문, while문 등에 들어가는 블록은 한 줄이어야 한다는 의미이다. 대개 거기서 함수를 호출한다.
- 바깥을 감싸는 함수가 작아질 뿐만 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면, 코드 이해가 쉽다.
2. 한 가지만 해라!
함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야한다.
- 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서이다.
- 함수가 '한 가지'만 하는지 판단하는 방법은 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다.
'알아두면쓸데있는신기한잡학사전 > 독서일지' 카테고리의 다른 글
[클린코드] 7일차 - 오류 보단 예외처리, 그리고 클린코드로 인한 중복 알레르기 (1) | 2023.10.31 |
---|---|
[클린코드] 6일차 - 좋은 함수를 위한 n가지 주의사항 (1) | 2023.10.30 |
[클린코드] 4일차 - 의미 있는 이름 짓는 시간은 유의미하다. (2) | 2023.10.27 |
[클린코드] 3일차 - 의미 있는 이름은 어떻게 지을까? (2) | 2023.10.25 |
[클린코드] 2일차 - 장인정신 길들이기 및 클린코드 고생길 시작 (3) | 2023.10.25 |