나에게 필요한 지식과 기술을 검색해 보세요.

Code Craft: 뛰어난 코드 작성을 위한 실천 지침

지은이

피트 구들리프

옮긴이

김윤명

출간일

2007.10.26

레벨

초중급

평점

4(1명)

정가

28,000

판매가

25,200

총 결제 금액

10%

25,200

적립 예정

1,260P

쪽수

752쪽

ISBN

9788979145144

브랜드

한빛미디어
읽기 쉽고 매력적이며 재미있는 코드 개발의 지혜들: 장인의 실수와 경험을 통해 배운다.
뛰어난 코드 작성을 위해서는 "기술적인 능력" 이상의 것이 필요합니다.

모든 프로그래머는 뛰어난 코드를 만들고자 합니다. 장인이 되고자 합니다. 그러나 그 길은 쉽지가 않습니다. 단지 "기술적인 능력"만 배워서는 안 되기 때문입니다. 열정이 있어야 하고 전략이 있어야 하며 문제 해결 능력 등 여러 가지 복합적 능력이 잘 조화를 이루어야 뛰어난 코드를 만들 수 있습니다.

현장 경험이 풍부한 저자는 다년간의 실무경험을 바탕으로 훌륭한 프로그래머를 위한 훈련 코스를 만들었습니다. 단계별로 밟아갈 수도 있고 원하는 부분만 읽어도 충분히 관련 지식을 습득할 수 있도록 구성하였습니다. 구체적인 코드 작성을 논하는 기술적인 측면뿐만 아니라 열정이나 가치관과 같은 심리적 측면 그리고 조직적인 관리와 같은 공학적인 측면까지 폭넓게 다루면서 신출내기 프로그래머를 넘어서 훌륭한 프로그래머로서 갖추어야 할 것들을 제시합니다.

프로그래머의 습관이나 사고방식 그리고 주변의 문제들을 돌아보고 단점을 고칠 수 있도록 해주는 수많은 문제들도 훌륭한 프로그래머로 거듭나는 데 큰 도움을 줄 것입니다.

주요 내용
  • 튼튼한 코드를 위한 방어적 프로그래밍 테크닉
  • 소스 코드의 레이아웃과 프레젠테이션
  • 중요한 것에 의미 있는 이름 붙이기
  • 코멘트를 작성하는 방법
  • 피할 수 없는 운명 다루기
  • 코드 안의 에러 상황
  • 소프트웨어 구축에 툴 사용하기
  • 코드 테스트라는 마술
  • 디버깅: 무언가 잘못 돌아갈 때 해야 할 일
  • 소스 코드를 실행 코드로 바꾸는 메커니즘
  • 프로그램의 최적화와 효율적인 코드의 작성
  • 안전한 프로그램 작성하기
  • 바람직한 소프트웨어 설계를 하는 방법
  • 소프트웨어 설계의 토대 쌓기
  • 코드는 어떻게 성장할까?
  • 프로그래밍에 대한 올바른 태도와 접근 방법 기르기
  • 팀워크와 개인 프로그래머
  • 소스 컨트롤과 셀프-컨트롤
  • 소프트웨어 규격서 작성하기
  • 코드 리뷰 수행하기
  • 소프트웨어 소요 시간 추정이라는 마술
  • 코드 개발 방법론과 프로세스
"너무 많은 프로그래머들이 부서지기 쉬운 블록탑처럼 코드를 작성합니다. 갑자기 기반을 살짝 찌르면 전체가 무너집니다. 코드는 층층이 지어지는 것입니다. 그러니까 한 층 위에 다른 층을 건축할 수 있도록 각 층을 완전하게 만드는 확실한 테크닉이 필요합니다."
- 1장 "방어하기"에서

어떤 독자를 위한 책인가?
  • 자기 코드의 질을 향상시키고 싶어하는 프로그래머
    모든 프로그래머는 나은 프로그래머가 되고 싶어 하는 포부를 가져야 합니다. 만약 그런 포부가 없다면 이 책은 당신을 위한 것이 아닙니다. 일을 시작한지 몇 년이 지난 직업적인 프로그래머일 수도 있고, 프로그래밍 개념에는 익숙하지만 최적으로 응용하는 방법을 모르는 학생일수도 있습니다.

  • 이 책을 읽는 독자는 반드시 프로그래밍을 해본 경험이 있어야 합니다.
    이 책은 프로그램의 작성 방법은 가르쳐주지 않습니다. 프로그램을 더 잘 작성하는 방법만 가르쳐줄 것입니다. 특정 언어에 치우치거나 독단적인 주장을 하는 일을 피하려고 노력했지만, 코드 예제를 보여주어야 할 필요는 있었습니다. 그런 코드는 대부분 C, C++, Java로 쓰였는데, 그 이유는 이 언어들이 현재 인기 있는 언어이기 때문입니다. 이 중 어느 것도 대단한 전문 지식이 있어야만 읽을 수 있는 것은 아닙니다. 따라서 꼭 C++에 능통한 프로그래머가 아니더라도 두려워할 필요가 없습니다.

저자

목차

1부 코드와 마주보기

1장 방어하기: 튼튼한 코드를 위한 방어적 프로그래밍 테크닉
훌륭한 코드를 향해서
최악을 가정하라
방어적 프로그래밍이란? 
험한 세상
방어적 프로그래밍을 위한 테크닉
제약
간추림
참고
생각해 봅시다

2장 최고의 레이아웃 계획: 소스 코드의 레이아웃과 프레젠테이션
정말 그게 중요해?
누가 읽을 것인지 알아야
좋은 프레젠테이션이란?
중괄호 위치 정하기
모두를 지배하는 하나의 스타일
하우스 스타일(그리고 어디에 붙여놓을 것인가)
표준 정하기
정당한 전쟁이라고?
간추림
참고
생각해 봅시다

3장 이름이 뭐길래: 중요한 것에 의미 있는 이름 붙이기
왜 이름을 잘 붙여야 하나?
우리는 무엇에 이름을 붙이는가?
이름 붙이기
세세한 실무
장미는 다른 이름으로 불리어도
간추림
참고
생각해 봅시다

4장 문서화 도구: "스스로-문서화하는" 코드 작성 테크닉
스스로-문서화하는 코드
스스로-문서화하는 코드 작성 테크닉
스스로-문서화하는 코드 작성의 실무 방법론 
간추림
참고
생각해 봅시다

5장 가벼운 코멘트: 코멘트를 작성하는 방법   
코멘트란 무엇인가?
코멘트는 어떻게 생겼는가? 
얼마나 많은 코멘트가 필요할까? 
코멘트 안에는 무엇이 들어갈까?
실무에서는
코멘트의 미학
코멘트 가지고 일하기
간추림
참고
생각해 봅시다

6장 사람은 실수를 하기 마련: 피할 수 없는 운명 다루기 - 코드 안의 에러 상황

어디에서 나왔나?
에러 리포트 메커니즘
에러 감지하기
에러 처리하기
에러 일으키기
에러 관리하기
간추림
참고
생각해 봅시다

2부 코드의 비밀스러운 일생

7장 프로그래머의 도구 상자: 소프트웨어 구축에 툴 사용하기
소프트웨어 툴이란?
왜 툴 걱정을 해야 하지?
파워 툴
어느 툴을 선택할까?
간추림
참고
생각해 봅시다

8장 시험 보는 시간: 코드 테스트라는 마술
현실 체크
누가, 무엇을, 언제, 왜?
테스트는 어렵지 않다...
테스트의 유형
단위 테스트 케이스 선택하기
테스트를 위한 설계
손 놓고도 할 수 있어!
고장과 직면해서
결함의 관리
간추림
참고
생각해 봅시다

9장 결함 찾기: 디버깅, 무언가 잘못 돌아갈 때 해야 할 일
인생의 진실
버그의 본성
버그 박멸
버그 사냥
결함을 고치는 방법
버그 예방법
말벌 스프레이, 달팽이 살충제, 파리 끈끈이...
간추림
참고
생각해 봅시다

10장 잭이 빌드한 코드: 소스 코드를 실행 코드로 바꾸는 메커니즘 
언어 장벽
두꺼비집으로 산 만들기
빌드를 빌드하기
좋은 빌드 시스템을 만드는 요소는?
작동 메커니즘
릴리즈 빌드
만물박사 빌드마스터
간추림
참고
생각해 봅시다

11장 속도의 필요성: 프로그램의 최적화와 효율적인 코드의 작성
최적화란 무엇인가?
코드의 최적화를 막는 것은?
왜 최적화가 안 되나?
왜 최적화를 하는가?
세세한 실무
최적화 테크닉
효율적인 코드 작성하기
간추림
참고
생각해 봅시다

12장 불안전 콤플렉스: 안전한 프로그램 작성하기
위험
반대편
변명, 변명
취약점의 감지
안전을 위해서라면
간추림
참고
생각해 봅시다

3부 코드의 모습

13장 웅대한 설계: 바람직한 소프트웨어 설계를 하는 방법
설계로서의 프로그래밍
우리는 무엇을 설계하는가?
무엇을 위한 소동이지?
좋은 설계
코드를 설계하는 방법
간추림
참고
생각해 봅시다

14장 소프트웨어 아키텍처: 소프트웨어 설계의 토대 쌓기
소프트웨어 아키텍처란?
좋은 아키텍처란?
아키텍처 스타일
간추림
참고
생각해 봅시다

15장 소프트웨어의 진화 또는 혁명?: 코드는 어떻게 성장할까?
소프트웨어의 부패
경고 신호
코드는 어떻게 성장하나?
불가능한 것 믿기
우리가 할 수 있는 일은?
간추림
참고
생각해 봅시다

4부 프로그래머의 무리?

16장 코드 멍키: 프로그래밍에 대한 올바른 태도와 접근 방법 기르기
코드 멍키 주식회사
이상적인 프로그래머
그래서 뭐?
변화하기 위해서는
간추림
참고
액션 시트(Action Sheet)
생각해 봅시다

17장 여기 우리 함께 서있네: 팀워크와 개인 프로그래머
소프트웨어 개발팀 - 큰 그림
팀의 조직
팀워크를 위한 툴
팀이 걸리는 질병
좋은 팀워크에 도움이 되는 개인적인 스킬과 특성
팀워크의 원칙
팀의 라이프 사이클
간추림
참고
액션 시트(Action Sheet)
생각해 봅시다

18장 안전한 소스 습관: 소스 컨트롤과 셀프 컨트롤
우리의 책임
소스 컨트롤
구성 관리
백업
소스 코드의 릴리즈
소스 코드를 어디에 두든
간추림
참고
생각해 봅시다

5부 프로세스의 일부

19장 규격화하기: 소프트웨어 규격서 작성하기
규격서란 무엇인가?
규격서의 유형
규격서가 포함해야 하는 것은?
규격서 작성의 프로세스
우리가 규격서 작성을 안 하는 이유는?
간추림
참고
생각해 봅시다

20장 사냥감 확인하기: 코드 리뷰 수행하기
코드 리뷰란?
언제 리뷰하나?
코드 리뷰 실시하기
자신의 태도를 리뷰하라
완벽한 코드
코드 리뷰를 넘어서
간추림
참고
체크리스트
생각해 봅시다

21장 얼마나 걸릴까?: 소프트웨어 소요 시간 추정이라는 마술
눈감고 찍기
추정이 그렇게 어려운 이유는?
압력 속에서 
실무적인 추정 방법
계획 세우기
뒤처지지 마라!
간추림
참고
생각해 봅시다

6부 정상으로부터의 조망

22장 프로그램의 요리법: 코드 개발 방법론과 프로세스
프로그래밍 스타일
요리법: 어떻게 그리고 무엇을
개발 프로세스
이미 충분해!
프로세스 고르기
간추림
참고
생각해 봅시다

23장 외부 경계: 여러 가지 프로그래밍 분야
애플리케이션 프로그래밍
게임 프로그래밍
시스템 프로그래밍
임베디드 프로그래밍
분산 프로그래밍
웹 애플리케이션 프로그래밍
엔터프라이즈 프로그래밍
수치 프로그래밍(numerical programming)
그래서 뭐?
간추림
참고
생각해 봅시다

24장 다음엔 어디서?
끝이 좋으면 다 좋다
그러면 이젠 뭘 하지?

답과 논의
참고문헌

리뷰

오탈자

28,000

10%

25,200