한 번에 하나씩
더스틴 보즈웰, 트레버 파우커
느낌표 ! (인상 깊은 문장 | 문맥)
한 번에 여러가지 일을 수행하는 코드는 이해하기 어렵다. 코드 블록 하나에서 새로운 객체를 초기화하고, 데이터를 청소하고, 입력을 분석하고, 비지니스 논리를 적용하는 일을 한꺼번에 수행하는 경우도 있다.
…
이번 장은 코드를 탈파편화(defragmenting) 하는 방법을 다룬다.
p.168
읽기 좋은 코드란 코드가 짧다고 읽기 좋은 코드라고 부를 수 없다. 한 눈에 코드가 어떤 역할을 하는지 알 수 있어야한다. 코드가 무엇을 하는지 알려면 한 블록 안에서 하나의 일을 해야한다. 이를 저자는 탈파편화라고 부르고 있다.
작업은 작을 수 있다.
블로그 사용자가 댓글에 ‘추천’과 ‘반대’ 의사표시를 할 수 있는 투표 도구가 있다고 해보자. 어떤 댓글의 전체 점수는 모든 득표의 합으로 계산된다. ‘추천’은 +1점이고 ‘반대’는 -1점이다.
p.169
개선 전 코드
var vote_changed = function (old_vote, new_vote) {
var score = get_sorce();
if (new_vote !== old_vote) {
if (new_vote === 'Up') {
score += (old_vote === 'Down' ? 2 : 1);
} else if (new_vote === 'Down') {
score -= (old_vote === 'Up' ? 2 : 1);
} else if (new_vote === '') {
score += (old_vote === 'Up' ? -1 : 1);
}
}
}
개선 코드
var vote_value = function (vote) {
if (vote === 'Up') {
return +1;
}
if (vote === 'Down') {
return -1;
}
return 0;
}
var vote_changed = function (old_vote, new_vote) {
var score = get_sorce();
score -= vote_value(old_vote);
score += vote_value(new_vote);
set_score(score);
}
보다시피 새로운 코드가 정상적으로 작동하는지 확인하는 정신적 노동은 이전보다 훨씬 적다. 바로 이것이 ‘이해하기 쉬운’ 코드를 만드는 핵심이다.
p.171
개선 전 코드와 개선된 코드를 보면 한 눈에 알아볼 수 있다는 차이점이 있다. 한 눈에 알아볼 수 있으니 나중에 코드 수정이나 디버깅할 때도 매우 편리할 것이다. 코드를 잘 짠다는 것은 보기 좋게 만들어서 오해를 줄이는 것을 말하는 것 같다. 개선 전 코드도 원하대로 동작은 하겠지만 나중에 기능을 추가하거나 변수가 추가되면 잘 돌아가는지 장담하기는 어려울 것이다. 이 예제처럼 작업을 작게해서 명확히 코드를 작성하는 것은 체감은 안되겠지만 버그를 줄이는 작업 같다.
Chapter 11 느낌
Chapter 11 에서는 할 일을 명확히 해야 사람도 명확히 이해할 수 있다고 말하고 있다. 다시 말해 개발자가 어떤 코드를 작성해야하는지 명확해야한다는 뜻이기도 하다. 가끔은 개발자인 자신이 무엇을 코딩하고 명확히 모르고 키보드에 손을 먼저 올릴 때가 있기 때문이다. 이렇게 했을 때 기능을 명확히하여 코드를 작성할 수 없다.