본문 바로가기

0xFF Etc

[BOOK]읽기 좋은 코드가 좋은 코드다

읽기 좋은 코드가 좋은 코드다: 더 나은 코드를 작성하는 간단하고 실전적인 테크닉


더 나은 코드를 작성하는 간단하고 실전적인 테크닉


이 책을 읽고 남는 점은 목차가 남는다. 

  • 1부_ 표면적인 수준에서의 개선 : 이름 짓기, 설명문, 미학, 코드베이스의 모든 줄에 적용될 수 있는 간단한 조언들

  • 2부_ 루프와 논리를 단순화하기 : 프로그램에서 사용되는 루프, 논리, 변수를 개선하여 더 이해하기 쉽게 만드는 방법

  • 3부_ 코드를 재작성하기 : 코드의 커다란 블록을 높은 수준에서 재조직하고 주어진 문제를 함수수준에서 해결하는 방법

  • 4부_ 선택된 주제들 : '이해하기 쉬운'이라는 원리를 테스트와 코드 예제를 통해 커다란 데이터 구조에 적용


아주 쉽게 내용을 작성해서 어쩌면 좀 허무한 내용? 일 수도 있겠다. 

이 책 이후로 리팩토링에 대해 관심을 더 가져야겠다는 생각이 들었다. 

마틴파울러 저서 리팩토링 꼭 읽어야 겠다


아래는 읽고 나서 남기고 싶은 내용이다.


  • 이름에 정보를 담아내는 것, 
  • 이름 포맷팅에 대한 고민, 
  • 명확하고 간결한 주석에 대한 고찰, 
  • 임시변수들이 필요한 곳과 불필요한 곳을 구분짓는 판단, 
  • 작업을 간결하게 하라_한번에 한가지씩

마지막 내용 중 예시로 '블로그 사용자 댓글 추천 시스템'이 있다.

블로그 사용자가 댓글에 '추천'과 '반대'의사 표시를 할 수 있는 투표도구를 작성하는 코드이다.

추천은 +1 반대는 -1 점이다.


vote_changed(old_vote, new_vote); //각 투표는 '추천' , '반대' 혹은 ''




var vote_changed = function(old_vote , new_vote){

var score = get_score();

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);

}

}

set_score(score);

}


위 코드는 작은 작업으로 쪼개면 아래 두가지와 같다.


1. old_vote 와 new_vote가 수치값으로 해석된다.


2. 점수가 변경된다.


이것은 더 간결하게 한다면


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_score();


score -= vote_value(old_vote); //이전 값을 제거한다.

score += vote_value(new_vote); //새값을 더한다.

set_score(score);

}


나도 아무 생각 없이 작성했다면 위와 같이 작성했을 것 같다. 간단하니깐 하고 말이다.


작업을 잘 나누고 쪼개서 작성하는 습관을 꼭 가져야 겠다.

'0xFF Etc' 카테고리의 다른 글

[BOOK]빅데이터 비즈니스  (0) 2013.01.21
[Tool]Bugzilla  (0) 2013.01.08
[TREND]BIG DATA LANDSCAPE  (0) 2012.07.12
[TOOL]주석을 자동으로 달아주는 jAutodoc  (0) 2012.07.10
[TREND]빅데이터로_진화하는_세상  (0) 2012.07.08