읽기 좋은 코드가 좋은 코드다 Ch 11

한 번에 하나씩

더스틴 보즈웰, 트레버 파우커

Alt text

느낌표 ! (인상 깊은 문장 | 문맥)

한 번에 여러가지 일을 수행하는 코드는 이해하기 어렵다. 코드 블록 하나에서 새로운 객체를 초기화하고, 데이터를 청소하고, 입력을 분석하고, 비지니스 논리를 적용하는 일을 한꺼번에 수행하는 경우도 있다.

이번 장은 코드를 탈파편화(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 에서는 할 일을 명확히 해야 사람도 명확히 이해할 수 있다고 말하고 있다. 다시 말해 개발자가 어떤 코드를 작성해야하는지 명확해야한다는 뜻이기도 하다. 가끔은 개발자인 자신이 무엇을 코딩하고 명확히 모르고 키보드에 손을 먼저 올릴 때가 있기 때문이다. 이렇게 했을 때 기능을 명확히하여 코드를 작성할 수 없다.


읽기 좋은 코드가 좋은 코드다 Ch 10

상관없는 하위문제 추출하기

읽기 좋은 코드가 좋은 코드다 Ch 12

생각을 코드로 만들기

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지