Part 2. 루프와 논리를 단순화하기
루프는 중요하다. 언어를 배울 때 생각하면 if, for, while 문 등을 제일 처음에 배우지 않는가. 이들이 모여 루프가 되고 논리가 된다. 코드는 수많은 루프와 논리로 이루어져 있고 이것만 단순화해도 좋은 코드가 될 것임이 자명하며 해당파트에서는 이 부분을 다뤘다.
7. 읽기 쉽게 흐름제어 만들기
part 1에서 일관성이 중요하다고 했었다. 읽기 쉽기 위해서 여기서도 적용된다. 그에 대한 예시는 다음과 같다.
# 왼쪽이 검사를 수행하는 대상 / 오른편은 비교대상 (고정값)
while (bytes_received < bytes_expected):
'''
'''
if와 else에 대한 순서도 주목할 수 있다. if에 어떤 조건을 넣느냐에 따라 읽기 쉬운 코드가 될 수 있다. 다음은 그에 대한 규칙이다.
- 부정이 아닌 긍정을 다루기
- 간단한 것을 먼저 처리하기
- 더 흥미롭고, 확실한 것을 먼저 다루기
그리고 가능하다면 루프내의 중첩을 피하기 위해 노력해야 한다.
8. 거대한 코드를 잘게 쪼개기
처음부터 설명 변수와 요약변수가 등장한다. 그에 대한 개념을 정리해보자.
## 설명변수 예시
# 설명변수 사용전
if line.split(':').strip() == "root":
...
# 설명변수 사용후
username = line.split(':').strip()
if username == "root":
...
## 요약변수 예시
# 요약변수 사용전
if (request.user.id == document.owner_id) {
// 사용자가 이 문서를 수정할 수 있다....
}
# 요약변수 사용후
final boolean user_owns_document = {request.user.id == document.owner_id);
if (user_owns_document){
...
}
항상 상대방의 입장에서 생각하자.
그리고 동일한 표현들을 요약변수로 추출하여 앞부분에 놓아둔다면, 다음과 같은 이점을 갖는다.
- 타이핑 실수 방지
- 코드 길이를 줄여준다
- 클래스명을 변경해야 할 때 한 곳만 바꾸면 된다.
9. 변수와 가독성
불필요한 변수는 쓰지 않는 것이 좋다.
now = datatime.datetime.now()
root_message.last_view_time = now
위 코드의 경우, now를 쓰지 않더라도 코드를 이해할 수 있으므로 안쓰는편이 좋다.
가장 중요한 부분은 "변수의 범위를 좁혀라" 이 부분이 아닐까싶다.
제한적인 접근에서 변수를 사용하면 그만큼 신경쓸 코드부분이 줄어들게 된다. 전역변수를 피해라라는 말을 많이 들었는데 이와 비슷한 뜻이다.
그리고 학교다니면서 교수님께 const를 많이 써라...라고 들었던것 같다. 이는 "값을 한 번만 할당하는 변수를 선호하라"라는 법칙을 보니 이해하게 되었다. 값이 고정된 변수는 생각하기 편하고 추가적인 생각을 요구하지 않기 떄문이다.
'도서 리뷰 > IT 도서 리뷰' 카테고리의 다른 글
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 2) (0) | 2023.01.19 |
---|---|
[IT 도서 리뷰] 구글 엔지니어는 이렇게 일한다 (CH. 1) (0) | 2023.01.12 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 4) (0) | 2022.07.26 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 3) (0) | 2022.07.24 |
[IT 도서 리뷰] 읽기 좋은 코드가 좋은 코드다 (Part. 1) (0) | 2022.07.14 |