길벗·이지톡

도서 IT전문서/IT입문서 IT교양

현실 세계에서 올바른 코드를 작성하는 법

동작하는 코드 너머에 있는 것들 

프로그래머는 동작하는 코드를 작성하는 법은 알지만, 그저 동작만 한다는 사실은 알지 못한다. 잘 작성된 코드, 이해하기 쉬운 코드, 요구사항의 균형점에 있는 훌륭한 코드를 작성하는 법은 대부분 알지 못한다. 이 책에서는 동작하는 코드가 아니라 훌륭한 코드를 작성하는 법을 설명한다. 훌륭한 코드를 작성하는 법을 하나씩 익히다 보면 수습생에서 전문가로 변화할 수 있을 것이다.

 

코드마다 스타일이 달라서 정말 한 사람이 작성한 게 맞아요?

문법을 설명하고, 예제가 동작하는 법을 설명하는 책은 많지만, 올바르게 코드를 작성하는 법을 설명하는 책은 많지 않다. 그때그때 즉흥적으로 코드를 작성하거나 인터넷 검색을 통해 가져온 코드를 사용하면서 코드를 작성하다 보면 팀 리뷰에서조차 정말 한 사람이 작성한 게 맞느냐는 얘기를 듣기 쉽다. 코드를 작성하는 일관된 스타일을 익히는 것이 중요하다. 코드의 표현 스타일, 변수 이름 짓기, 오류 처리, 보안 같이 코딩에 필요한 요소들을 익혀서 정말 한 사람이 작성한 게 맞느냐는 얘기는 듣지 않게 하자.

 

위대한 코드는 나 홀로 탄생하지 않는다

전반부가 코드 작성 그 자체에 대한 이야기라면 후반부는 팀, 개발 프로세스, 명세서 작성, 팀 리뷰, 외부의 제약 조건을 다룬다. 훌륭한 코드는 프로그래머 개인의 코드 작성뿐 아니라 팀, 개발 프로세스, 명세서 작성, 팀 리뷰의 과정을 거친다는 사실을 놓치지 않는다. 전반부가 팀원의 역량이라면 후반부는 팀장, 아키텍처, 조직의 역량이라는 뜻이다. 위대한 코드를 위한 여정을 위해 이 책이 선반에 반드시 있어야 하는 이유다.

 

신입 개발자를 위한 코드의 기술

  • 올바른 코드를 올바른 방식으로 작성할 수 있을까?
  • 기술적으로 명쾌한 코드
  • 유지 보수 가능한 코드
  • 엉망인 코드를 이해하고 조정하기
  • 어울려 일하기

목차

 

1부 코드페이스에서

1         방어 태세

__1.1     훌륭한 코드를 향해

__1.2     최악을 가정하라

__1.3     방어적 프로그래밍이란?

__1.4     거대하고 못된 세상

__1.5     방어적 프로그래밍 기법

__1.6     제약

__1.7     요약

__1.8     참고

__1.9     생각해 보기

 

2         잘 세운 계획

__2.1     왜 중요할까?

__2.2     독자 파악하기

__2.3     훌륭한 표현이란 무엇일까?

__2.4     마음 단단히 먹자(Brace yourself)

__2.5     전부를 뛰어넘는 단 하나의 스타일

__2.6     하우스 스타일(그리고 언제 고수해야 하는지)

__2.7     표준 수립

__2.8     전쟁은 불가피하다?

__2.9     요약

__2.10   참고

__2.11   생각해 보기

 

3         이름이 왜 중요할까?

__3.1     이름을 잘 지어야 하는 이유

__3.2     무엇을 명명할까?

__3.3     이름 고르기

__3.4     하나씩 살펴보기

__3.5     어떤 이름으로 불리우든 장미는 장미다

__3.6     요약

__3.7     참고

__3.8     생각해 보기

 

4         무엇을 작성해야 하나

__4.1     자체 문서화 코드

__4.2     자체 문서화 코드 작성 기법

__4.3     실용적 자체 문서화 방법론

__4.4     요약

__4.5     참고

__4.6     생각해 보기

 

5         부수적 주석

__5.1     코드 주석이란?

__5.2     주석은 어떻게 생겼나?

__5.3     주석을 얼마나 써야 할까?

__5.4     주석에 어떤 내용을 넣을까?

__5.5     실전

__5.6     미학적(aesthetics) 주석

__5.7     주석 다루기

__5.8     요약

__5.9     참고

__5.10   생각해 보기

 

6         사람은 실수하기 마련이다

__6.1     오류가 시작되는 곳

__6.2     오류 보고 메커니즘

__6.3     오류 감지

__6.4     오류 처리

__6.5     난동 부리기

__6.6     오류 처리

__6.7     요약

__6.8     참고

__6.9     생각해 보기

 

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

7         프로그래머의 도구상자

__7.1     소프트웨어 도구란

__7.2     왜 도구에 신경 쓰는가?

__7.3     공부 벌레(Power tool)

__7.4     어떤 도구를 쓸까?

__7.5     요약

__7.6     참고

__7.7     생각해 보기

 

8         테스트할 시간

__8.1     현실성 검증

__8.2     누가, 언제, 무엇을, ?

__8.3     테스트는 어렵지 않다…?

__8.4     테스트 유형

__8.5     단위 테스트 케이스 고르기

__8.6     테스트 디자인

__8.7     직접 하지 않아도 돼!

__8.8     실패의 단면

__8.9     이겨낼 수 있는가?

__8.10   요약

__8.11   참고

__8.12   생각해 보기

 

9         결함 찾기

__9.1     삶의 진실

__9.2     야수의 본성

__9.3     해충 박멸

__9.4     버그 사냥

__9.5     결함을 고치는 방법

__9.6     예방

__9.7     말벌 스프레이, 민달팽이 퇴치제, 파리잡이 끈끈이

__9.8     요약

__9.9     참고

__9.10   생각해 보기

 

10        잭이 개발한 코드

__10.1   언어 장벽

__10.2   자세히 들여다 보기

__10.3   빌드 만들기

__10.4   훌륭한 빌드 시스템이란 무엇일까?

__10.5   기법(mechanics, 역학, 메커니즘)

__10.6   이제 출시해 주세요

__10.7   다재다능 빌드마스터?

__10.8   요약

__10.9   참고

__10.10  생각해 보기

 

11        속도의 필요성

__11.1   최적화란

__11.2   무엇이 코드를 최적이 아니게 만드는가?

__11.3   왜 최적화하면 안 되는가

__11.4   왜 최적화할까?

__11.5   하나씩 살펴보기

__11.6   최적화 기법

__11.7   효율적인 코드 작성

__11.8   요약

__11.9   참고

__11.10  생각해 보기

 

12        불안 장애

__12.1   위험

__12.2   (The Opposition)

__12.3   변명을 해보자면

__12.4   취약한 부분

__12.5   보호 라켓

__12.6   요약

__12.7   참고

__12.8   생각해 보기

 

3부 코드 형태

13        훌륭한 디자인

__13.1   프로그래밍이 곧 디자인이다

__13.2   무엇을 디자인할까?

__13.3   왜 이렇게 야단법석(호들갑)일까(소란스러워)?

__13.4   좋은 소프트웨어 디자인

__13.5   코드 디자인 방법

__13.6   요약

__13.7   참고

__13.8   생각해 보기

 

14        소프트웨어 아키텍처

__14.1   소프트웨어 아키텍처란

__14.2   훌륭한 아키텍처란?

__14.3   아키텍처 스타일

__14.4   요약

__14.5   참고

__14.6   생각해 보기

 

15        소프트웨어 진화 혹은 소프트웨어 혁명?

__15.1   소프트웨어 부패

__15.2   경고 신호

__15.3   코드는 어떻게 성장할까?

__15.4   불가능을 믿다

__15.5   무엇을 할 수 있을까?

__15.6   요약

__15.7   참고

__15.8   생각해 보기

 

4부 프로그래머 무리?

16        코드 몽키

__16.1   몽키 비즈니스

__16.2   이상적 프로그래머

__16.3   그럼 이제 무엇을 할까?

__16.4   가장 어리석은 인간

__16.5   요약

__16.6   참고

__16.7   활동지

__16.8   생각해 보기

 

17        뭉쳐야 산다

__17.1   큰 그림으로 보는 팀

__17.2   팀 구성

__17.3   팀워크 도구

__17.4   팀 병폐

__17.5   단단한 팀워크 구축을 위한 개개인의 능력과 특성

__17.6   팀워크 수칙

__17.7   팀 생애 주기

__17.8   요약

__17.9   참고

__17.10  활동지

__17.11  생각해 보기

 

18        소스 안전 생활화

__18.1   우리의 책임

__18.2   소스 제어

__18.3   형상 관리

__18.4   백업

__18.5   소스 코드 출시

__18.6   소스 코드를 어디에 두든

__18.7   요약

__18.8   참고

__18.9   생각해 보기

 

5부 과정의 일환

19        명시적으로

__19.1   명세란 정확히 무엇인가?

__19.2   명세의 유형

__19.3   명세에 어떤 내용이 들어가야 하는가?

__19.4   명세 작성 절차

__19.5   그냥 명세를 작성하면 어떨까?

__19.6   요약

__19.7   참고

__19.8   생각해 보기

 

20        완벽한 리뷰

__20.1   코드 리뷰란?

__20.2   언제 리뷰하는가?

__20.3   코드 리뷰 수행

__20.4   태도 리뷰

__20.5   코드 완성

__20.6   코드 리뷰가 끝이 아니다

__20.7   요약

__20.8   참고

__20.9   체크리스트

__20.10  생각해 보기

 

21        그걸 누가 알겠어?

__21.1   어림짐작

__21.2   왜 추정하기 어려운가?

__21.3   압박

__21.4   실용적 추정 방법

__21.5   계획 게임

__21.6   일정 지키기!

__21.7   요약

__21.8   참고

__21.9   생각해 보기

 

6부 위에서 내려다 보기

22        프로그램 레시피

__22.1   프로그래밍 스타일

__22.2   레시피: 어떻게 그리고 무엇을

__22.3   개발 프로세스

__22.4   그만하면 됐다!

__22.5   프로세스 선택

__22.6   요약

__22.7   참고

__22.8   생각해 보기

 

23        외부 제약

__23.1   애플리케이션 프로그래밍

__23.2   게임 프로그래밍

__23.3   시스템 프로그래밍

__23.4   임베디드 프로그래밍

__23.5   분산 프로그래밍

__23.6   웹 애플리케이션 프로그래밍

__23.7   엔터프라이즈 프로그래밍

__23.8   수치해석 프로그래밍

__23.9   그래서 어쩌라고?

__23.10  요약

__23.11  참고

__23.12  생각해 보기

 

24        다음 단계는?

__24.1   하지만 지금은?

더보기접기

저자&기여자

ㆍ지은이 피트 구들리프

소개
이화여대 컴퓨터공학과를 졸업하고, KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. 데이터베이스 외에 온톨로지(Ontology), 개인화 검색 등을 연구했으며 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구를 진행 중이다.

ㆍ옮긴이 심지현

소개
이화여대 컴퓨터공학과를 졸업하고, KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. 데이터베이스 외에 온톨로지(Ontology), 개인화 검색 등을 연구했으며 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구를 진행 중이다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.