더 나은 코드를 작성하는 간단하고 실전적인 테크닉
이 책을 읽고 남는 점은 목차가 남는다.
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 |