책 소개
켄트 벡은 늘상 일어나는 프로그래밍 작업에 사용되고, 좀더 읽기 좋은 코드를 작성하는 데 필요한 77개의 구현 패턴을 이 책에 모았다. 이 패턴들은 클래스, 상태, 행위, 메소드, 컬렉션, 프레임워크 등 소프트웨어 개발에 있어 다양한 측면을 다룬다. 각 패턴은 그림, 이야기, 예, 짧은 글 등의 방식으로 표현된다. 변수 작명부터 예외처리에 이르기까지 프로그래밍에 필요한 대부분 작업에 대한 답을 이 책에서 찾을 수 있을 것이다.
[ 책 소개 ]
기능적으로 올바르게 동작한다고 해서 모두 훌륭한 코드는 아니다. 훌륭한 코드는 프로그래머의 의도를 일관되게 전달해서, 다른 프로그래머들이 코드를 쉽게 이해하고 사용하며 자신 있게 수정할 수 있어야 한다. 그러나 훌륭한 코드는 쉽게 탄생하지 않는다. 훌륭한 코드는 프로그래머가 하루에도 수백 번 이상 내리는 작지만 중요한 결정의 산물이다. 이러한 중요한 결정들에 대해, XP를 만들고 소프트웨어 패턴과 테스트 기반 개발을 선도한 전설적인 소프트웨어 혁신자인 켄트 벡이 강력한 “구현 패턴”을 공개한다. 구현 패턴을 사용하면 더 간결하고 명쾌하며 체계적이고 비용 대비 효과적인 코드를 작성할 수 있다.
구현 패턴을 통해 다양한 수준의 프로그래머, 특히 소프트웨어 패턴이나 기민한 방법론을 사용하는 프로그래머들이 이득을 얻을 수 있을 것이다. 또한 이 책은 더 효율적으로 협업하고 싶거나 유지 보수가 쉬운 소프트웨어를 작성하고자 하는 팀에게 더할 나위 없이 좋은 자료가 될 것이다. 구현 패턴은 여러분이 매일 작성하는 프로그램의 면면을 바꿔놓을 것이 분명하다.
[ 이 책에서 다루는 내용 ]
■ 코드를 통한 커뮤니케이션의 가치와 패턴에 깔려 있는 철학
■ 언제 어떻게 클래스를 생성해야 하는가, 클래스는 어떻게 로직을 담아야 하는가
■ 상태를 저장하고 얻어오는 최선의 기법
■ 로직, 특히 대안 경로를 표현하는 행위에 관한 패턴
■ 메소드를 어떻게 작성하고 이름 짓고 나눠야 하는가
■ 컬렉션의 선택과 사용
■ 프레임워크를 작성할 때 필요한 구현 패턴의 변형
[ 책 소개 ]
기능적으로 올바르게 동작한다고 해서 모두 훌륭한 코드는 아니다. 훌륭한 코드는 프로그래머의 의도를 일관되게 전달해서, 다른 프로그래머들이 코드를 쉽게 이해하고 사용하며 자신 있게 수정할 수 있어야 한다. 그러나 훌륭한 코드는 쉽게 탄생하지 않는다. 훌륭한 코드는 프로그래머가 하루에도 수백 번 이상 내리는 작지만 중요한 결정의 산물이다. 이러한 중요한 결정들에 대해, XP를 만들고 소프트웨어 패턴과 테스트 기반 개발을 선도한 전설적인 소프트웨어 혁신자인 켄트 벡이 강력한 “구현 패턴”을 공개한다. 구현 패턴을 사용하면 더 간결하고 명쾌하며 체계적이고 비용 대비 효과적인 코드를 작성할 수 있다.
구현 패턴을 통해 다양한 수준의 프로그래머, 특히 소프트웨어 패턴이나 기민한 방법론을 사용하는 프로그래머들이 이득을 얻을 수 있을 것이다. 또한 이 책은 더 효율적으로 협업하고 싶거나 유지 보수가 쉬운 소프트웨어를 작성하고자 하는 팀에게 더할 나위 없이 좋은 자료가 될 것이다. 구현 패턴은 여러분이 매일 작성하는 프로그램의 면면을 바꿔놓을 것이 분명하다.
[ 이 책에서 다루는 내용 ]
■ 코드를 통한 커뮤니케이션의 가치와 패턴에 깔려 있는 철학
■ 언제 어떻게 클래스를 생성해야 하는가, 클래스는 어떻게 로직을 담아야 하는가
■ 상태를 저장하고 얻어오는 최선의 기법
■ 로직, 특히 대안 경로를 표현하는 행위에 관한 패턴
■ 메소드를 어떻게 작성하고 이름 짓고 나눠야 하는가
■ 컬렉션의 선택과 사용
■ 프레임워크를 작성할 때 필요한 구현 패턴의 변형
목차
목차
- 1장 소개 / 23
- 이 책의 구성 / 26
- 시작해 봅시다 / 27
- 2장 패턴 / 29
- 3장 프로그래밍 이론 / 33
- 가치 / 34
- 커뮤니케이션 / 34
- 단순성 / 36
- 유연성 / 37
- 원칙 / 39
- 지역적 변화 / 39
- 최소 중복 / 40
- 로직과 데이터의 결합 / 40
- 대칭성 / 41
- 선언적 표현 / 42
- 변화율 / 44
- 맺음말 / 45
- 가치 / 34
- 4장 동기유발 / 47
- 5장 클래스 / 51
- 클래스 / 53
- 단순한 상위클래스 이름 / 54
- 한정적 하위클래스 이름 / 55
- 추상 인터페이스 / 56
- 인터페이스 / 58
- 추상 클래스 / 59
- 버전 인터페이스 / 60
- 값 객체 / 62
- 특화 / 65
- 하위클래스 / 66
- 구현자 / 69
- 내부 클래스 / 69
- 인스턴스별 행위 / 71
- 조건문 / 71
- 위임 / 73
- 플러그인 선택자 / 76
- 익명 내부 클래스 / 77
- 라이브러리 클래스 / 78
- 맺음말 / 80
- 6장 상태 / 81
- 상태 / 82
- 접근 / 84
- 직접 접근 / 85
- 간접 접근 / 86
- 공용 상태 / 87
- 가변 상태 / 88
- 외재 상태 / 90
- 변수 / 90
- 지역 변수 / 92
- 필드 / 93
- 파라미터 / 95
- 수집 파라미터 / 97
- 옵션 파라미터 / 98
- 가변 인자 / 98
- 파라미터 객체 / 99
- 상수 / 100
- 역할 제시형 작명 / 101
- 선언 타입 / 103
- 초기화 / 104
- 열성적 초기화 / 104
- 게으른 초기화 / 105
- 맺음말 / 106
- 7장 행위 / 107
- 제어 흐름 / 108
- 주요 흐름 / 109
- 메시지 / 109
- 선택 메시지 / 110
- 더블 디스패치 / 111
- 분리(순차) 메시지 / 112
- 되돌림 메시지 / 113
- 초청 메시지 / 114
- 설명 메시지 / 115
- 예외 흐름 / 116
- 보호절 / 116
- 예외 / 119
- 체크 예외 / 119
- 예외 전달 / 120
- 맺음말 / 121
- 8장 메소드 / 123
- 조합 메소드 / 126
- 의도 제시형 이름 / 128
- 메소드 가시성 / 129
- 메소드 객체 / 132
- 오버라이드 / 134
- 오버로드 / 134
- 메소드 반환 타입 / 135
- 메소드 주석 / 136
- 도우미 메소드 / 137
- 디버그 출력 메소드 / 138
- 변환 / 139
- 변환 메소드 / 140
- 변환 생성자 / 141
- 생성 / 141
- 완결 생성자 / 142
- 공장 메소드 / 143
- 내부 공장 / 144
- 컬렉션 접근자 메소드 / 145
- 불린 설정 메소드 / 147
- 질의 메소드 / 148
- 동등성 메소드 / 148
- 취득 메소드 / 150
- 설정 메소드 / 151
- 안전한 복사 / 153
- 맺음말 / 154
- 9장 컬렉션 / 155
- 메타포 / 156
- 이슈 / 158
- 인터페이스 / 160
- 배열 / 160
- Iterable / 161
- Collection / 161
- List / 162
- Set / 162
- SortedSet / 163
- Map / 164
- 구현 / 165
- Collection / 166
- List / 166
- Set / 167
- Map / 168
- Collections / 169
- 검색 / 170
- 정렬 / 171
- 수정 불가능한 컬렉션 / 172
- 단일 원소 컬렉션 / 173
- 무원소 컬렉션 / 173
- 컬렉션 확장 / 174
- 맺음말 / 175
- 10장 발전하는 프레임워크 / 177
- 애플리케이션 수정 없이 프레임워크 수정하기 / 178
- 호환성 없는 업그레이드 / 179
- 호환성을 유지하는 업그레이드 / 181
- 라이브러리 클래스 / 182
- 객체 / 183
- 맺음말 / 194
- 부록 A 성능 측정 / 197
- 사례 / 198
- API / 199
- 구현 / 200
- MethodTimer / 201
- 오버헤드 상쇄하기 / 204
- 테스트 / 205
- 컬렉션 비교 / 205
- ArrayList와 LinkedList 비교 / 208
- 셋 비교 / 210
- 맵 비교 / 211
- 맺음말 / 212
- 참고문헌 / 215
- 프로그래밍 일반 / 215
- 철학 / 217
관련 블로그 글
[스페셜 이슈 제10호] 읽기 쉬운 코드 작성 비법
NHN에서 일본 검색서비스 개발 업무를 맡고 있는 에이콘 이클립스 시리즈 에디터 양석호님이 월간 마이크로소프트웨어 4월호 <이 책의 발견> 코너에 "켄트 벡이 공개하는 읽기 쉬운 코드 작성 비법"이라는 글을 기고해 주셨습니다.
업무하시랴 책 번역하시랴 많이 바쁘실 텐데 멀리 일본에서 좋은 글 써서 보내주신 양석호님과 글 실어주신 월간 마소에도 감사드립니다.
▷▶ 스페셜 이슈 기사 읽으러 가기
흔히 우리가 알고 있는 패턴, 즉 디자인 패턴은 특정 유형의 설계 문제에 대응하기 위한 해결책이다. 하지만 『켄트 벡의 구현 패턴』은 구현 과정에서 겪는 좀더 일반적이고 사소한 선택, 즉 변수 이름은 어떻게 지을지, 메소드는 어떻게 쪼갤지, 클래스 멤버의 가시성은 어떻게 결정할지 등 순간순간의 다양한 갈림길에 대해 더 읽기 쉬운 코드를 목표로 한 해결책을 제시하고 있다.
"좋은 코드는 다른 사람이 읽기 쉬운 코드"라는 전제를 시작으로 가치와 원칙을 확립하고, 확립된 가치와 원칙에 따라 일관성있는 실제 코드의 패턴을 정리해낸 것이다. 이름 하나 지을 때마다, 클래스 하나 만들 때마다 발버둥치게 만들던 고민이 줄어가는 느낌만으로도 책을 읽는 내내 즐거웠다.
업무하시랴 책 번역하시랴 많이 바쁘실 텐데 멀리 일본에서 좋은 글 써서 보내주신 양석호님과 글 실어주신 월간 마소에도 감사드립니다.
▷▶ 스페셜 이슈 기사 읽으러 가기
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
JCO 컨퍼런스와 『켄트 벡의 구현 패턴』
지난 주 토요일 16일에는 제9회 한국 자바 개발자 컨퍼런스가 열렸습니다. 엄청나게 많은 분이 참여하셔서 성황리에 끝난 행사이기도 했고 한편 예상보다 많은 참가자들 때문에 행사 진행이 조금 아쉬웠다는 얘기도 나오긴 합니다만, 이일민님께서 블로그에 적으신 것처럼 별로 유례를 찾을 수 없는 자발적인 행사로서 올해를 거울 삼아 내년에는 더욱 좋은 모습으로 발전해나갈 것을 기대합니다. 사실 저희는 부스를 지키느라 여러 발표자분들의 강의를 지켜보지 못해서 사실 앙꼬없는 찐빵 같은 후기가 되겠네요. 간단히 사진으로 그 날의 현장을 좀 둘러보겠습니다. ^^*에이콘 출판사 부스 앞에 사람들이 많이 모이셨죠? 그 이유는 오신 분들만이 아신다는. ^^
역시 이날 가장 인기있었던 책은 가장 따끈따끈한 신간이었던 『켄트 벡의 구현 패턴』이었습니다. 이런 걸 보고 절찬리에 판매중! 이라는 거겠지요? ^^*
오늘의 짤방 하나. IT 서적 출판사로서 한몫을 하고 계시는 a모사의 사장님, H모사의 기획자 대리님, I사의 사장님이 모이셨군요. 흔치 않은 자리일 것 같아 한방 찰칵. :D
역시 이날 가장 인기있었던 책은 가장 따끈따끈한 신간이었던 『켄트 벡의 구현 패턴』이었습니다. 이런 걸 보고 절찬리에 판매중! 이라는 거겠지요? ^^*
오늘의 짤방 하나. IT 서적 출판사로서 한몫을 하고 계시는 a모사의 사장님, H모사의 기획자 대리님, I사의 사장님이 모이셨군요. 흔치 않은 자리일 것 같아 한방 찰칵. :D
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
[신간] 켄트 벡의 구현 패턴
『켄트 벡의 구현 패턴』
부제: 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법
켄트 벡 지음 | 전동환 옮김 | 2008년 2월 14일 출간예정
232쪽 | 22,000원 | ISBN: 9788960770317
부제: 읽기 쉬운 코드를 작성하는 77가지 자바 코딩 비법
켄트 벡 지음 | 전동환 옮김 | 2008년 2월 14일 출간예정
232쪽 | 22,000원 | ISBN: 9788960770317
소프트웨어 업계에서 가장 창조적이고 유명한 지도자 중 한 명으로 추앙받는 인물로서, 일관되게 기존 소프트웨어 엔지니어링 규범에 도전해 패턴, 테스트 주도 개발, 익스트림 프로그래밍 등을 주창해온 사람? 정답을 저렇게 여기 저기 공개해놓고 짤막 퀴즈처럼 내자니 조금 우스운 감이 없지 않습니다만, 누구나 쉽게 유추해내셨으리라 생각합니다. 바로 켄트 벡이죠.
저자 켄트 벡이 늘상 일어나는 프로그래밍 작업에 사용되고, 좀더 읽기 좋은 코드를 작성하는 데 필요한 77개의 구현 패턴을 이 책에 모았습니다. 이 패턴들은 클래스, 상태, 행위, 메소드, 컬렉션, 프레임워크 등 소프트웨어 개발에 있어 다양한 측면을 다룹니다. 각 패턴은 그림, 이야기, 예, 짧은 글 등의 방식으로 표현하고 있습니다. 변수 작명부터 예외처리에 이르기까지 프로그래밍에 필요한 대부분 작업에 대한 답을 이 책에서 찾을 수 있을 것입니다.
저자 켄트 벡이 늘상 일어나는 프로그래밍 작업에 사용되고, 좀더 읽기 좋은 코드를 작성하는 데 필요한 77개의 구현 패턴을 이 책에 모았습니다. 이 패턴들은 클래스, 상태, 행위, 메소드, 컬렉션, 프레임워크 등 소프트웨어 개발에 있어 다양한 측면을 다룹니다. 각 패턴은 그림, 이야기, 예, 짧은 글 등의 방식으로 표현하고 있습니다. 변수 작명부터 예외처리에 이르기까지 프로그래밍에 필요한 대부분 작업에 대한 답을 이 책에서 찾을 수 있을 것입니다.
이 책이 어떻게 구성되어 있는가를 일목요연하게 정리해낸 그림입니다.
소개: 커뮤니케이션을 돕는 코드의 중요성과 패턴의 기본 철학에 대한 짧은 소개
클래스: 왜, 어떻게 클래스를 생성해야 하는지, 클래스에서 어떤 식으로 로직을 표현해야하는가에 관한 패턴
상태: 상태를 저장하고 읽어오는 데 관한 패턴
행위: 로직, 특히 다른 수행 경로를 표현하는 패턴
메소드: 메소드를 작성하는 데 관한 패턴
컬렉션: 컬렉션을 선정하고 사용하는데 관한 패턴
발전하는 프레임워크: 애플리케이션이 아닌 프레임워크를 작성할 때는 어떤 식으로 패턴을 변화시켜 사용해야 하는가?
이 책의 원서 『Implementation Patterns』는 2007년 11월에 출간된 따끈따끈한 신간인데 발렌타인 데이에 독자여러분을 찾아가게 되었으니 정말 新刊 맞죠? ^^; 작년 이맘때쯤 『인사이드 머신: 그림으로 배우는 컴퓨터 아키텍처와 마이크로프로세서』라는 멋진 책을 선보인 전동환님이 이 책을 맡아 번역을 해주셨습니다. 역자분을 통해 한국 독자께 전해온 저자분의 메시지 한번 읽어보시고, 에이콘에서 처음 선보이는 켄트 벡의 책 많이 기대해주세요.
지금 YES24, 교보문고, 강컴, 알라딘, 인터파크에서 예약 주문을 받고 있습니다. 출간일이 아직 남은 점, 꼭 확인하시고 구입하세요! :)
소개: 커뮤니케이션을 돕는 코드의 중요성과 패턴의 기본 철학에 대한 짧은 소개
클래스: 왜, 어떻게 클래스를 생성해야 하는지, 클래스에서 어떤 식으로 로직을 표현해야하는가에 관한 패턴
상태: 상태를 저장하고 읽어오는 데 관한 패턴
행위: 로직, 특히 다른 수행 경로를 표현하는 패턴
메소드: 메소드를 작성하는 데 관한 패턴
컬렉션: 컬렉션을 선정하고 사용하는데 관한 패턴
발전하는 프레임워크: 애플리케이션이 아닌 프레임워크를 작성할 때는 어떤 식으로 패턴을 변화시켜 사용해야 하는가?
이 책의 원서 『Implementation Patterns』는 2007년 11월에 출간된 따끈따끈한 신간인데 발렌타인 데이에 독자여러분을 찾아가게 되었으니 정말 新刊 맞죠? ^^; 작년 이맘때쯤 『인사이드 머신: 그림으로 배우는 컴퓨터 아키텍처와 마이크로프로세서』라는 멋진 책을 선보인 전동환님이 이 책을 맡아 번역을 해주셨습니다. 역자분을 통해 한국 독자께 전해온 저자분의 메시지 한번 읽어보시고, 에이콘에서 처음 선보이는 켄트 벡의 책 많이 기대해주세요.
지금 YES24, 교보문고, 강컴, 알라딘, 인터파크에서 예약 주문을 받고 있습니다. 출간일이 아직 남은 점, 꼭 확인하시고 구입하세요! :)
한국 독자 여러분께프로그램을 짤 때는 자신과 컴퓨터 뿐 아니라, 다른 사람들을 생각해야 한다!
이것이 구현 패턴이 전하는 메시지입니다. 이 책에서는 다른 사람을 배려하며 프로그래밍할 때의 경제적 이득을 강조했지만, 사실 이는 프로그래머 자신을 위한 것이기도 합니다. 자신이 더 큰 공동체의 일원임을 깨닫게 되면 공동체에 기여하는 것에 대한 만족을 느낄 수 있게 되기 때문입니다. 여러분도 이와 같은 만족감을 느끼실 수 있으면 좋겠습니다. 즐거운 코딩 하시길.미국 오레곤주 메를린에서
켄트 벡 드림
크리에이티브 커먼즈 라이센스 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.