본문 바로가기

추천 검색어

실시간 인기 검색어

좋은 코드, 나쁜 코드

프로그래머의 코드 개선법
톰 롱 저자(글) · 차건희 번역
제이펍 · 2022년 05월 26일
9.9
10점 중 9.9점
(22개의 리뷰)
집중돼요 (33%의 구매자)
  • 좋은 코드, 나쁜 코드 대표 이미지
    좋은 코드, 나쁜 코드 대표 이미지
  • 좋은 코드, 나쁜 코드 부가 이미지1
    좋은 코드, 나쁜 코드 부가 이미지1
  • 좋은 코드, 나쁜 코드 부가 이미지2
    좋은 코드, 나쁜 코드 부가 이미지2
  • A4
    사이즈 비교
    210x297
    좋은 코드, 나쁜 코드 사이즈 비교 188x245
    단위 : mm
01 / 04
MD의 선택 무료배송 이벤트 소득공제
10% 27,000 30,000
적립/혜택
1,500P

기본적립

5% 적립 1,500P

추가적립

  • 5만원 이상 구매 시 추가 2,000P
  • 3만원 이상 구매 시, 등급별 2~4% 추가 최대 1,500P
  • 리뷰 작성 시, e교환권 추가 최대 300원
배송안내
무료배송
배송비 안내
국내도서/외국도서
도서 포함 15,000원 이상 구매 시 무료배송
도서+사은품 또는 도서+사은품+교보Only(교보굿즈)

15,000원 미만 시 2,500원 배송비 부과

교보Only(교보배송)
각각 구매하거나 함께 20,000원 이상 구매 시 무료배송

20,000원 미만 시 2,500원 배송비 부과

해외주문 서양도서/해외주문 일본도서(교보배송)
각각 구매하거나 함께 15,000원 이상 구매 시 무료배송

15,000원 미만 시 2,500원 배송비 부과

업체배송 상품(전집, GIFT, 음반/DVD 등)
해당 상품 상세페이지 "배송비" 참고 (업체 별/판매자 별 무료배송 기준 다름)
바로드림 오늘배송
업체에서 별도 배송하여 1Box당 배송비 2,500원 부과

1Box 기준 : 도서 10권

그 외 무료배송 기준
바로드림, eBook 상품을 주문한 경우, 플래티넘/골드/실버회원 무료배송쿠폰 이용하여 주문한 경우, 무료배송 등록 상품을 주문한 경우
내일(2/27,목) 도착
기본배송지 기준
배송일자 기준 안내
로그인 : 회원정보에 등록된 기본배송지
로그아웃 : '서울시 종로구 종로1' 주소 기준
로그인정확한 배송 안내를 받아보세요!

이달의 꽃과 함께 책을 받아보세요!

1권 구매 시 결제 단계에서 적용 가능합니다.

알림 신청하시면 원하시는 정보를
받아 보실 수 있습니다.

북카드

키워드 Pick

키워드 Pick 안내

관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.

좋은 코드, 나쁜 코드 상세 이미지

수상내역/미디어추천

이 책의 가장 큰 특징은 나쁜 코드가 왜 나쁜 코드인지 설명하고, 나쁜 코드를 좋은 코드로 바꿔가는 과정을 직접 보여주는 것이다. 이를 통해 독자는 좋은 코드와 나쁜 코드를 구분할 줄 알고, 이론으로 배운 코드 작성 방법을 실제로 어떻게 적용하는지 알게 된다. 이 책을 통해 나쁜 코드를 좋은 코드로 개선하는 법을 배우고 누구나 함께 일하고 싶어 하는 좋은 개발자가 되어보자.

작가정보

저자(글) 톰 롱

Tom Long
구글의 소프트웨어 엔지니어다. 모바일 디스플레이 광고의 자동화 및 최적화 기술팀의 테크 리드이자 팀장으로 일하며 초급 소프트웨어 엔지니어들에게 전문적인 코딩 모범 사례에 대해 정기적으로 멘토링하고 있다.

번역 차건희

미국 로스앤젤레스의 Shell Recharge Solutions에서 자바 백엔드 테크 리드로 일하고 있다. 자바, 스프링 부트, 메시지 큐, 일래스틱서치, 레디스 등 자바 백엔드의 전반적인 기술 스택 및 성능 향상에 관심이 있다. 옮긴 책으로는 《프로그래머의 뇌》(제이펍, 2022), 《몽고디비 인 액션》(제이펍, 2012)이 있다.

목차

  • 옮긴이 머리말 xiii
    베타리더 후기 xv
    머리말 xviii
    감사의 글 xix
    이 책에 대하여 xx
    장별 요약 xxv
    표지에 대하여 xxvi


    PART I 이론
    CHAPTER 1 코드 품질 3
    1.1 코드는 어떻게 소프트웨어가 되는가 5
    1.2 코드 품질의 목표 8
    1.3 코드 품질의 핵심 요소 12
    1.4 고품질 코드 작성은 일정을 지연시키는가? 23
    요약 25

    CHAPTER 2 추상화 계층 27
    2.1 널값 및 의사코드 규약 28
    2.2 왜 추상화 계층을 만드는가? 29
    2.3 코드의 계층 33
    2.4 마이크로서비스는 어떤가? 54
    요약 56

    CHAPTER 3 다른 개발자와 코드 계약 57
    3.1 자신의 코드와 다른 개발자의 코드 58
    3.2 여러분이 작성한 코드의 사용법을 다른 사람들은 어떻게 아는가? 61
    3.3 코드 계약 64
    3.4 체크 및 어서션 73
    요약 77

    CHAPTER 4 오류 79
    4.1 복구 가능성 80
    4.2 견고성 vs 실패 84
    4.3 오류 전달 방법 93
    4.4 복구할 수 없는 오류의 전달 108
    4.5 호출하는 쪽에서 복구하기를 원할 수도 있는 오류의 전달 108
    4.6 컴파일러 경고를 무시하지 말라 116
    요약 118

    PART II 실전
    CHAPTER 5 가독성 높은 코드를 작성하라 123
    5.1 서술형 명칭 사용 123
    5.2 주석문의 적절한 사용 127
    5.3 코드 줄 수를 고정하지 말라 132
    5.4 일관된 코딩 스타일을 고수하라 134
    5.5 깊이 중첩된 코드를 피하라 137
    5.6 함수 호출도 가독성이 있어야 한다 141
    5.7 설명되지 않은 값을 사용하지 말라 146
    5.8 익명 함수를 적절하게 사용하라 150
    5.9 프로그래밍 언어의 새로운 기능을 적절하게 사용하라 157
    요약 159

    CHAPTER 6 예측 가능한 코드를 작성하라 161
    6.1 매직값을 반환하지 말아야 한다 162
    6.2 널 객체 패턴을 적절히 사용하라 169
    6.3 예상치 못한 부수 효과를 피하라 177
    6.4 입력 매개변수를 수정하는 것에 주의하라 183
    6.5 오해를 일으키는 함수는 작성하지 말라 186
    6.6 미래를 대비한 열거형 처리 191
    6.7 이 모든 것을 테스트로 해결할 수는 없는가? 197
    요약 198

    CHAPTER 7 코드를 오용하기 어렵게 만들라 201
    7.1 불변 객체로 만드는 것을 고려하라 202
    7.2 객체를 깊은 수준까지 불변적으로 만드는 것을 고려하라 213
    7.3 지나치게 일반적인 데이터 유형을 피하라 219
    7.4 시간 처리 226
    7.5 데이터에 대해 진실의 원천을 하나만 가져야 한다 233
    7.6 논리에 대한 진실의 원천을 하나만 가져야 한다 237
    요약 242

    CHAPTER 8 코드를 모듈화하라 243
    8.1 의존성 주입의 사용을 고려하라 244
    8.2 인터페이스에 의존하라 251
    8.3 클래스 상속을 주의하라 253
    8.4 클래스는 자신의 기능에만 집중해야 한다 265
    8.5 관련 있는 데이터는 함께 캡슐화하라 268
    8.6 반환 유형에 구현 세부 정보가 유출되지 않도록 주의하라 272
    8.7 예외 처리 시 구현 세부 사항이 유출되지 않도록 주의하라 275
    요약 280

    CHAPTER 9 코드를 재사용하고 일반화할 수 있도록 하라 281
    9.1 가정을 주의하라 282
    9.2 전역 상태를 주의하라 287
    9.3 기본 반환값을 적절하게 사용하라 295
    9.4 함수의 매개변수를 주목하라 300
    9.5 제네릭의 사용을 고려하라 303
    요약 306

    PART III 단위 테스트
    CHAPTER 10 단위 테스트의 원칙 309
    10.1 단위 테스트 기초 310
    10.2 좋은 단위 테스트는 어떻게 작성할 수 있는가? 313
    10.3 퍼블릭 API에 집중하되 중요한 동작은 무시하지 말라 319
    10.4 테스트 더블 325
    10.5 테스트 철학으로부터 신중하게 선택하라 344
    요약 346

    CHAPTER 11 단위 테스트의 실제 347
    11.1 기능뿐만 아니라 동작을 시험하라 348
    11.2 테스트만을 위해 퍼블릭으로 만들지 말라 353
    11.3 한 번에 하나의 동작만 테스트하라 361
    11.4 공유 설정을 적절하게 사용하라 367
    11.5 적절한 어서션 확인자를 사용하라 380
    11.6 테스트 용이성을 위해 의존성 주입을 사용하라 384
    11.7 테스트에 대한 몇 가지 결론 388
    요약 389

    APPENDIX A 초콜릿 브라우니 레시피 391
    APPENDIX B 널 안전성과 옵셔널 393
    APPENDIX C 추가 예제 코드 397

    찾아보기 401

추천사

책 속으로

고품질 코드는 일반적으로 좀 더 신뢰할 수 있고, 유지보수가 쉬우며, 버그가 적은 소프트웨어를 생산한다. 코드 품질을 높이는 것에 관한 많은 원칙들은 소프트웨어가 처음에 만들어지는 방식을 보장하는 것뿐만 아니라, 이후에 요구 사항이 진화하고 새로운 상황이 등장하더라도 그 방식을 계속 유지할 수 있도록 하는 것에 관심을 둔다. (4쪽)

코드를 구성하는 방법은 코드 품질의 기본적인 측면 중 하나이며, 코드를 잘 구성한다는 것은 간결한 추상화 계층을 만드는 것으로 귀결될 때가 많다. 이 장에서는 이것이 무엇을 의미하는지 설명하고, 문제를 추상화 계층으로 나누고, 나눠진 추상화 계층을 반영하도록 코드를 구성하는 방법을 살펴볼 것이다. 또한, 이렇게 할 때 어떻게 가독성, 모듈성, 재사용성, 일반화성 및 테스트 용이성이 크게 개선되는지를 살펴본다. (27쪽)

여러분의 코드는 자신에게 가장 중요할지 모르지만 회사의 다른 개발자들은 아마 그것에 대해 잘 알지 못할 것이고, 그들이 여러분의 코드를 접할 때 그 코드가 왜 존재하는지 혹은 무슨 일을 수행하는지에 대한 사전 지식을 가지고 있지 않을 수 있다. 이 경우 다른 개발자가 의도치 않게 잘 실행되던 코드를 작동하지 않게 하거나 오용하는 방식으로 코드를 추가하거나 수정할 가능성이 크다. (60쪽)

가독성은 본질적으로 주관적인 것이며 그것이 정확히 무엇을 의미하는지 확실하게 정의하기는 어렵다. 가독성의 핵심은 개발자가 코드의 기능을 빠르고 정확하게 이해할 수 있도록 하는 것이다. 실제로 이렇게 하려면 다른 사람의 관점에서 보았을 때, 코드가 혼란스럽거나 잘못 해석될 수 있는지를 상상하고 공감해야 할 때가 많다. (123쪽)

단위 테스트에 대한 정확한 정의가 없다고 해도 일반적으로 큰 문제가 되지 않는다. 단위 테스트를 구성하고 있는 것이 정확히 무엇인지, 그리고 정확한 정의가 없음에도 일부러 정의를 고안해 내고 자신이 작성하는 테스트가 그 정의에 정확히 부합하는지에 대해 너무 집착하지 않는 것이 좋다. 궁극적으로 중요한 것은 코드를 잘 테스트하고 이 작업을 유지보수할 수 있는 방법으로 수행하는 점이다. (310쪽)

출판사 서평

읽기 쉽고, 기억하기 쉽고, 적용하기 쉬운 코드 작성법
프로그램을 만드는 것은 수많은 사람과 소통하는 일이다. 본인이 작성한 코드를 다른 사람이 볼 수 있고, 사용할 수도 있다. 다른 사람과 작업하지 않는다고 하더라도 미래의 나, 혹은 과거의 나와 함께하는 협업이다. 당장의 문제를 해결하기 위해 임시방편으로 작성한 코드가 쌓이다 보면 유지보수가 어렵고, 요구 사항이 변했을 때 대처가 까다롭게 된다. 다른 사람과 협업이 쉽고, 요구 사항의 변화에 적응할 수 있고, 유지보수가 쉬운 코드를 작성한다면 한층 더 좋은 소프트웨어를 만들 수 있을 것이다. 구글 소프트웨어 엔지니어가 소개하는 읽기 쉽고, 기억하기 쉽고, 적용하기 쉬운 코드 작성법을 익혀 좋은 개발자로 거듭나보자.
책은 총 3개의 부로 구성되어 있다. 1부 ‘이론’에서는 코드 작성의 접근 방식에 대한 이론적인 내용을 다룬다. 코드 품질에 대한 이야기부터 추상화 계층, 코드 계약, 오류에 대한 이야기를 중점적으로 설명한다. 2부 ‘실전’에서는 본격적으로 나쁜 코드를 어떻게 좋은 코드로 바꿀지 앞에서 배운 이론을 바탕으로 여섯 가지 원칙과 함께 구체적인 예시를 살펴본다. 3부 ‘단위 테스트’에서는 효과적인 단위 테스트를 위한 주요 원칙과 지침을 소개한다. 책의 예제 코드는 의사코드로 작성되었으나 자바, C#, 타입스크립트, 자바스크립트, C++, 스위프트, 코틀린, 다트 2 등 정적 타입의 객체 지향 프로그래밍 언어를 바탕으로 한다.
이 책의 가장 큰 특징은 나쁜 코드가 왜 나쁜 코드인지 설명하고, 나쁜 코드를 좋은 코드로 바꿔가는 과정을 직접 보여주는 것이다. 이를 통해 독자는 좋은 코드와 나쁜 코드를 구분할 줄 알고, 이론으로 배운 코드 작성 방법을 실제로 어떻게 적용하는지 알게 된다. 이 책을 통해 나쁜 코드를 좋은 코드로 개선하는 법을 배우고 누구나 함께 일하고 싶어 하는 좋은 개발자가 되어보자.

주요 내용
■ 문장처럼 읽히는 함수 작성법
■ 버그 없는 코드 작성법
■ 나쁜 코드를 알아내는 방법
■ 자신과 팀을 위한 시간 절약법

대상 독자
■ 소프트웨어 개발 경험이 있는 주니어 개발자
■ 초급 개발자들을 가이드해야 하는 시니어 개발자

기본정보

상품정보 테이블로 ISBN, 발행(출시)일자 , 쪽수, 크기, 총권수, 원서(번역서)명/저자명을(를) 나타낸 표입니다.
ISBN 9791191600896
발행(출시)일자 2022년 05월 26일
쪽수 436쪽
크기
188 * 245 * 24 mm / 923 g
총권수 1권
원서(번역서)명/저자명 Good Code, Bad Code/Tom Long

Klover 리뷰 (22)

구매 후 리뷰 작성 시, e교환권 200원 적립

사용자 총점

10점 중 9.9점
10점 중 10점
94%
10점 중 7.5점
6%
10점 중 5점
0%
10점 중 2.5점
0%

33%의 구매자가
집중돼요 라고 응답했어요

33%

집중돼요

17%

도움돼요

25%

쉬웠어요

0%

최고예요

25%

추천해요

10점 중 10점
/도움돼요
흥미로운 내용이었습니다
10점 중 10점
/쉬웠어요
유용하게 잘 읽었습니다.
10점 중 10점
/쉬웠어요
유용하게 잘 읽었습니다.
10점 중 10점
/추천해요
프로그래밍을 잘하기 위해 구매했습니다.
10점 중 10점
/도움돼요
내용이 재미 있어요 잘읽혀요~~
10점 중 10점
/집중돼요
읽으면 좋은 코드와 나쁜 코드를 구분할 수 있게 되는 책
10점 중 10점
/쉬웠어요
실습하면서 읽어보겠습니다 궁금했던 부분이 풀려요
10점 중 10점
/추천해요
굿코드 작성을 위한 좋은 내용들이 많이 있어서 실무에서 도움이 많이 될 것 같습니다.
10점 중 10점
/추천해요
내 코드의 문제점을 확실히 알아보고 개선할 수 있는 책이다
10점 중 10점
/집중돼요
읽는중이라서 내용은 정확히 말하기 어렵지만
편집은 맘에 드네요

문장수집 (5)

문장수집 안내
문장수집은 고객님들이 직접 선정한 책의 좋은 문장을 보여주는 교보문고의 새로운 서비스입니다. 마음을 두드린 문장들을 기록하고 좋은 글귀들은 "좋아요“ 하여 모아보세요. 도서 문장과 무관한 내용 등록 시 별도 통보 없이 삭제될 수 있습니다.
리워드 안내
구매 후 90일 이내에 문장수집 작성 시 e교환권 100원을 적립해드립니다.
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
판매가 5,000원 미만 상품의 경우 리워드 지급 대상에서 제외됩니다. (2024년 9월 30일부터 적용)

구매 후 리뷰 작성 시, e교환권 100원 적립

이런 문제가 있다면 당신의 코드는 나쁜 코드 입니다.
좋은 코드, 나쁜 코드
좋은 코드 나쁜 코드
좋은 코드, 나쁜 코드

교환/반품/품절 안내

  • 반품/교환방법

    마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환 신청, [1:1 상담 > 반품/교환/환불] 또는 고객센터 (1544-1900)
    * 오픈마켓, 해외배송 주문, 기프트 주문시 [1:1 상담>반품/교환/환불] 또는 고객센터 (1544-1900)
  • 반품/교환가능 기간

    변심반품의 경우 수령 후 7일 이내,
    상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
  • 반품/교환비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 반품/교환 불가 사유

    1) 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
    2) 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
    3) 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
    4) 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
    5) 디지털 컨텐츠인 ebook, 오디오북 등을 1회이상 ‘다운로드’를 받았거나 '바로보기'로 열람한 경우
    6) 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
    7) 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
    8) 세트상품 일부만 반품 불가 (필요시 세트상품 반품 후 낱권 재구매)
    9) 기타 반품 불가 품목 - 잡지, 테이프, 대학입시자료, 사진집, 방통대 교재, 교과서, 만화, 미디어전품목, 악보집, 정부간행물, 지도, 각종 수험서, 적성검사자료, 성경, 사전, 법령집, 지류, 필기구류, 시즌상품, 개봉한 상품 등
  • 상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
  • 소비자 피해보상 환불 지연에 따른 배상

    1) 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
    2) 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

TOP