7. 읽기 쉽게 흐름제어 만들기
📌 조건문에서 인수의 순서
1. if (length >= 10)
2. if (10 <= length)
1. while (bytes_received < bytes_expected)
2. while (bytes_expected > bytes_received)
같은 코드인데 왜 1번이 읽기가 더 편할까?
왼쪽 | 오른쪽 |
값이 더 유동적인 '질문을 받는' 표현 | 더 고정적인 값으로 , 비교대상으로 사용되는 표현 |
📌 if/else 블록의 순서
- 부정이 아닌 긍정을 다루어라.즉 if(!debug) 가 아니라 if(debug)
- 간단한 것을 먼저 처리하라.
- 더 흥미롭고, 확실한 것을 먼저 다루어라
if (url.HasQueryParameter("expand_all")) {
for (int i = 0; i< items.size(); i++) {
items[i].Expand()
}
} else {
...
}
- 코드를 보자마자 expand_all이 무엇인지 궁금해 할 것이다.
더 흥미롭고 긍정하는 부분이므로 이를 먼저 다르는 것이 좋다.
📌 삼항연산자를 이용하는 조건문 표현
- 기본적으로 if/else를 이용하고 삼항연산자는 매우 간단할 떄만 사용해야 한다.
📌 do/while 루프를 피하라
- do/while문은 코드를 두 번 읽기 때문에 부자연스럽다.
📌 함수 중간에서 반환하기
for (int i = 0; i < results.size(); i++) {
if (results[i] == NULL) continue;
non_null_count++;
if (results[i]->name == "") continue;
cout << "Considering candidate..." << endl;
...
}
- 밖으로 빠져나가지 않고 루프에서 중간에 반환할 때는 continue를 사용
- 일반적으로 continue문은 혼란스럽게 보일 수 있지만 루프에 대한 각각의 반복이 독립적이다.
따라서 continue는 단지 "이번 반복을 건너뛰어라"를 의미한다.
'책' 카테고리의 다른 글
읽기 좋은 코드가 좋은 코드다. (0) | 2025.05.20 |
---|---|
읽기 좋은 코드가 좋은 코드다. (0) | 2025.05.14 |
읽기 좋은 코드가 좋은 코드다 (0) | 2025.05.13 |
읽기 좋은 코드가 좋은 코드다 (0) | 2025.05.12 |
읽기 좋은 코드가 좋은 코드다 (0) | 2025.05.11 |