>
>
디자인 패턴의 아름다움 : 객체지향 패러다임부터 설계 원칙, 코딩 규칙, 리팩터링 기법, 디자인 패턴까지
왕정, 김진호 ㅣ 제이펍 ㅣ ??模式之美
  • 정가
35,000원
  • 판매가
31,500원 (10% ↓, 3,500원 ↓)
  • 발행일
2023년 05월 26일
  • 페이지수/크기/무게
528page/188*245*29/1088g
  • ISBN
9791192987101/1192987101
  • 배송비
무료배송
  • 배송예정일
10/05(목) 배송완료예정
  • 현 보유재고
100 권 이상
  • 주문수량
  • 바로구매 북카트담기
  • 제휴몰 주문 시 고객보상, 일부 이벤트 참여 및 증정품 증정, 하루/당일 배송에서 제외되므로 참고 바랍니다.
  • 상세정보
  • 구글러의 코드 품질 관리 비법을 공개한다 코드의 품질을 매우 중요시했던 구글러들은 코드에 달린 주석에서 작은 마침표 오류까지 수정을 요청하기에 이르렀고, 그만큼 엄격했던 코드 품질 관리 덕분에 프로젝트의 유지 관리 비용이 매우 낮아졌다. 이와 같은 경험을 집대성한 이 책에서는 200여 개의 실제 프로젝트 사례를 바탕으로 객체지향 패러다임, 설계 원칙, 코딩 규칙, 리팩터링 기법, 디자인 패턴의 5가지 측면에서 고품질의 코드 작성 방법을 상세히 배울 수 있다.
  • 객체지향 프로그래밍, 설계 원칙, 코딩 규칙, 리팩터링, 디자인 패턴으로 코드 품질을 높이자 개발자는 연차가 쌓일수록 코드의 품질을 올리고 싶은 욕구에 휩싸인다. 하지만 안타깝게도 많은 기업의 개발 부서는 기능 하나하나를 만들어내고 일정을 쳐내는 데 급급한 실정이다. 작성해놓은 코드가 동작만 한다면 다시 들춰볼 시간도, 여유도 없다. 그런데 이렇게 급하게 만든 코드를 유지 보수하다 보면 막막해져서 모든 코드를 삭제하고 다시 작성하고 싶어진다. 그렇다면 고품질의 코드는 어떻게 작성할까? 엄격한 코드 품질 관리로 유지 보수 비용을 현저히 낮추는 개발 환경(구글)에서 근무했던 저자는 코드 설계에 대한 이론 지식을 먼저 갖추는 것을 추천한다. 코드 설계 이론 지식은 코드의 유지 보수성, 가독성, 확장성, 유연성, 간결성, 재사용성, 테스트 용이성을 높이는 데 도움이 된다. 책의 1장에서는 고품질의 코드란 무엇인지 정의하고 과도한 설계를 피하는 법을 알려준다. 2장에서는 설계 원칙과 디자인 패턴의 기초에 해당하는 객체지향 프로그래밍을 소개하고, 3장에서는 SOLID 원칙, KISS 원칙, YAGNI 원칙, DRY 원칙, LoD 원칙 등 중요한 설계 원칙을 소개한다. 4장에서는 명명, 주석, 코드 스타일, 코딩 팁을 포함한 코딩 규칙을 배울 수 있고, 5장에서는 리팩터링의 네 가지 요소와 단위 테스트, 코드 테스트 용이성, 디커플링 등을 다루고 예제와 함께 리팩터링 기술을 익힌다. 6장, 7장, 8장은 각각 생성, 구조, 행동 세 가지 분류로 나눠 22가지 디자인 패턴을 소개한다. 6장에서는 싱글턴 패턴, 팩터리 패턴, 빌더 패턴, 프로토타입 패턴을 포함한 생성 디자인 패턴을, 7장에서는 프록시 패턴, 데커레이터 패턴, 어댑터 패턴, 브리지 패턴, 퍼사드 패턴, 복합체 패턴, 플라이웨이트 패턴을 포함한 구조 디자인 패턴을 소개한다. 8장에서는 옵서버 패턴, 템플릿 메서드 패턴, 전략 패턴, 책임 연쇄 패턴, 상태 패턴, 반복자 패턴, 비지터 패턴, 메멘토 패턴, 커맨드 패턴, 인터프리터 패턴, 중재자 패턴 등 행동 디자인 패턴을 소개한다. 이 책의 코드는 대부분 자바로 작성되었지만, 다루는 내용과 설명은 특정 프로그래밍 언어와 관련이 없으며 어떤 프로그래밍 언어를 사용하더라도 모두 읽을 수 있다. 코딩 능력을 향상하고 싶은 모든 개발자들에게 추천한다.
  • 옮긴이 머리말 xiii 베타리더 후기 xiv 시작하며 xvi CHAPTER 1 개요 1 1.1 코드 설계를 배우는 이유 1 __1.1.1 고품질의 코드 작성 2 / 1.1.2 복잡한 코드 개발 다루기 2 __1.1.3 프로그래머의 기본 능력 4 / 1.1.4 경력 개발에 필요한 기술 5 __1.1.5 생각해보기 5 1.2 코드 품질 평가 방법 6 __1.2.1 유지 보수성 8 / 1.2.2 가독성 9 / 1.2.3 확장성 10 / 1.2.4 유연성 10 __1.2.5 간결성 11 / 1.2.6 재사용성 11 / 1.2.7 테스트 용이성 12 / 1.2.8 생각해보기 12 1.3 고품질 코드를 작성하는 방법 12 __1.3.1 객체지향 13 / 1.3.2 설계 원칙 13 / 1.3.3 디자인 패턴 14 __1.3.4 코딩 규칙 15 / 1.3.5 리팩터링 기법 15 / 1.3.6 생각해보기 17 1.4 과도한 설계를 피하는 방법 18 __1.4.1 코드 설계의 원래 의도는 코드 품질을 향상시키는 것이다 18 __1.4.2 코드 설계의 원칙은 앞에 문제가 있고, 뒤에 방안이 있다는 것이다 18 __1.4.3 코드 설계의 응용 시나리오는 복잡한 코드에 적용되어야 한다 19 __1.4.4 지속적인 리팩터링은 과도한 설계를 효과적으로 방지할 수 있다 20 __1.4.5 특정 시나리오 외의 코드 설계에 대해 이야기하지 않는다 20 __1.4.6 생각해보기 21...
  • 우리는 종종 코드 품질에 주의를 기울여야 하고 코드를 작성하기 전에 코드 설계 단계를 무시하지 않아야 한다고 말한다. 코드를 설계하지 않는 것은 좋지 않지만, 과도하게 설계하는 것도 좋지 않다. 과거 업무 경험 동안 많은 동료를 겪었는데, 특히 코드를 과도하게 설계하고 디자인 패턴을 남용하는 것을 좋아하지만 개발 경험이 적은 엔지니어들이 있었다. 그들은 코딩을 시작하기도 전에 코드 설계 작업에 오랜 시간을 할애한다. 간단한 요구 사항이나 단순한 코드의 경우 코드가 더 유연하고 향후 확장을 위한 견고한 기반이 되기를 바라며 개발 프로세스에서 다양한 디자인 패턴을 적용하는 경우가 많다. 하지만 과도한 설계는 나중에 요구 사항이 변하지 않을 수도 있기 때문에, 이런 시도는 코드의 복잡성만 높일 뿐이다. 따라서 우리는 과도한 설계를 피하는 방법, 특히 객체지향 프로그래밍 패러다임, 설계 원칙, 코딩 규칙, 리팩터링과 같이 디자인 패턴의 남용을 피하는 방법에 대해 이야기할 필요가 있다. (18쪽) 그러나 일반적으로 대부분의 프로그래머는 종종 객체지향 분석과 객체지향 설계를 머릿속이나 간단한 스케치로 마친 후 바로 코드 작성을 시작할 뿐만 아니라, 코드 작성 도중에도 최적화와 리팩터링을 하는 경우가 많다. 반대로 코드를 작성하기 전에 객체지향 분석과 설계에 많은 시간을 할애하고 단단한 클래스 다이어그램과 UML 다이어그램을 그렸더라도, 모든 세부 사항과 상호 작용에 대해 한 번에 다 정의하는 것은 불가능하다. 코드를 작성하면서 여전히 코드를 뒤엎어 리팩터링하고, 또 이를 반복해야 한다. 결국 소프트웨어 개발은 본질적으로 지속적인 반복, 패치, 문제 발견, 문제 해결의 과정이며, 지속적인 리팩터링의 과정이다. 엄격하게 하나의 단계를 모두 마치고 다음 단계로 넘어가는 것이 불가능하다는 것을 알아야 한다. (55쪽) 리스코프 원칙에는 좀 더 이해하기 쉬운 설명 방식이 있는데, 바로 계약에 따른 설계(design by contract)라는 표현이다. 하위 클래스를 설계할 때는 상위 클래스의 동작 규칙을 따라야 한다. 상위 클래스는 함수의 동작 규칙을 정의하고 하위 클래스는 함수의 내부 구현 논리를 변경할 수 있지만 함수의 원래 동작 규칙은 변경할 수 없다. 여기서 말하는 동작 규칙에는 함수가 구현하기 위해 선언한 것, 입력, 출력, 예외에 대한 규칙, 주석에 나열된 모든 특수 사례 설명이 포함된다. 사실 여기에서 언급된 상위 클래스와 하위 클래스 간의 관계는 인터페이스와 구현 클래스 간의 관계로 대체될 수도 있다. (137쪽) 팩터리 패턴은 동일한 상위 클래스나 인터페이스를 상속하는 하위 클래스 그룹과 같이 유형은 다르지만 연관되어 있는 객체를 생성할 때 사용되며, 이때 어떤 유형의 객체를 생성할지는 미리 지정된 매개변수에 의해 결정된다. 반면에 빌더 패턴은 동일한 유형의 복잡도가 높은 객체를 생성하는데, 이때 선택적인 매개변수를 설정하거나 사용자 정의를 통해 다른 객체를 생성한다. / 두 패턴의 차이점은 고전적인 예를 통해 쉽게 이해할 수 있다. 고객이 식당에 들어가서 주문을 하면 팩터리 패턴을 사용하여 고객의 선택에 따라 피자, 버거, 샐러드와 같은 다양한 음식을 만들고, 빌더 패턴을 통해 치즈, 토마토, 베이컨 등 고객이 선택한 다양한 토핑을 얹은 피자를 만들 수 있다. (301쪽) 메멘토 패턴을 적용할 때, 백업할 객체가 상대적으로 크거나 백업 빈도가 높으면 스냅숏이 차지하는 메모리가 상대적으로 많아지고, 백업과 복구에 드는 시간이 상대적으로 길어진다. 이 문제를 해결하는 방법은 무엇일까? / 응용 시...
  • 왕정 [저]
  • 구글에서 번역 관련 시스템 개발에 참여했고 10여 년간 알고리즘을 연구해왔다. 현재는 금융회사에서 수석 시스템 아키텍트로서 회사의 비즈니스 아키텍처 설계 및 개발을 책임지고 있다. 데이터 구조, 디자인패턴, 알고리즘에 관심이 있으며 기술 공유에 진심이다. 《?据???算法之美(데이터 구조와 알고리즘의 아름다움)》를 집필하였다.
  • 김진호 [저]
  • 서울대 전자공학과, 중국 천진의과대학 의예과, 청화대 컴퓨터공학과를 졸업하였다. 2000년 Pocket PC 애플리케이션 개발자로서 모바일 프로그래밍을 시작한 이래, 11년 동안 Windows CE, Windows Mobile, Android OS, iOS 애플리케이션 개발자로 활동 중이다. 2008년부터 스마트폰용 통신형 네비게이션을 비롯한 모바일 애플리케이션 개발을 진행하고 있으며, 몇몇 지인과 함께 모바일 애플리케이션 서비스 개발 프로젝트인 인프레브(Infinite Revolution)을 8년째 운영 중이다. 최근에는 Android OS용 제품과 iOS 4용 제품의 개발에 힘쓰고 있다. 대표적인 개발 제품으로는 드림위즈 도우미, 포켓 드림위즈로 대표되는 드림위즈 애플리케이션 시리즈와 InClose, InFont 등으로 구성된 InSuite가 있으며, Windows CE 개발 관련 서적을 비롯한 몇 권의 서적을 한국과 일본에서 출판한 경험이 있다. 저서로는 '갤럭시 S 어플활용백서', '안드로이드폰 완전정복' 등이 있다.
  • 전체 0개의 구매후기가 있습니다.

인터파크도서는 고객님의 단순 변심에 의한 교환과 반품에 드는 비용은 고객님이 지불케 됩니다.
단, 상품이나 서비스 자체의 하자로 인한 교환 및 반품은 무료로 반품 됩니다.
교환 및 반품이 가능한 경우
상품을 공급 받은 날로부터 7일이내 가능
공급받으신 상품의 내용이 표시, 광고 내용과 다르거나 다르게 이행된 경우에는 공급받은 날로부터 3개월 이내,
   혹은 그사실을 알게 된 날 또는 알 수 있었던 날로부터 30일 이내
상품에 아무런 하자가 없는 경우 소비자의 고객변심에 의한 교환은 상품의 포장상태 등이 전혀 손상되지 않은 경우에 한하여 가능
교환 및 반품이 불가능한 경우
구매확정 이후(오픈마켓상품에 한함)
고객님의 책임 있는 사유로 상품 등이 멸실 또는 훼손된 경우
   (단, 상품의 내용을 확인하기 위하여 포장 등을 훼손한 경우는 제외)
시간이 지남에 따라 재판매가 곤란할 정도로 물품의 가치가 떨어진 경우
포장 개봉되어 상품 가치가 훼손된 경우
다배송지의 경우 반품 환불
다배송지의 경우 다른 지역의 반품을 동시에 진행할 수 없습니다.
1개 지역의 반품이 완료된 후 다른 지역 반품을 진행할 수 있으므로, 이점 양해해 주시기 바랍니다.
중고상품의 교환
중고상품은 제한된 재고 내에서 판매가 이루어지므로, 교환은 불가능합니다.
오픈마켓 상품의 환불
오픈마켓상품에 대한 책임은 원칙적으로 업체에게 있으므로, 교환/반품 접수시 반드시 판매자와 협의 후 반품 접수를 하셔야하며,
   반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가능할 수 있으니 유의하시기 바랍니다.
배송예정일 안내
인터파크 도서는 모든 상품에 대해 배송완료예정일을 웹사이트에 표시하고 있습니다.
<인터파크 직배송 상품>
상품은 월~토요일 오전 10시 이전 주문분에 대하여 당일 출고/당일 배송완료를 보장하는 상품입니다.
상품은 서울지역/평일 주문분은 당일 출고/익일 배송완료를 보장하며,
서울외지역/평일 주문분의 경우는 오후 6시까지 주문분에 대하여 익일 배송완료를 보장하는 상품입니다.
(단, 월요일은 12시까지 주문에 한함)
상품은, 입고예정일(제품출시일)+택배사배송일(1일)에 배송완료를 보장합니다.
~ 상품은 유통특성상 인터파크에서 재고를 보유하지 않은 상품으로
주문일+기준출고일+택배사배송일(1일)에 배송완료를 보장합니다.(토/공휴일은 배송기간에 포함되지 않습니다.)
※기준출고일:인터파크가 상품을 수급하여 물류창고에서 포장/출고하기까지 소요되는 시간
<업체 직접배송/오픈마켓 상품>
~ 상품은 업체가 주문을 확인하고, 출고하기까지 걸리는 시간입니다.
주문일+기준출고일+택배사배송일(2일)에 배송완료를 보장합니다.(토/공휴일은 배송기간에 포함되지 않습니다.)
※5일이내 출고가 시작되지 않을시, 오픈마켓 상품은 자동으로 주문이 취소되며, 고객님께 품절보상금을 지급해 드립니다.
배송비 안내
도서(중고도서 포함)만 구매하시면 : 배송비 2,000원 (1만원이상 구매 시 무료배송)
음반/DVD만 구매하시면 : 배송비 1,500원 (2만원이상 구매 시 무료배송)
잡지/만화/기프트만 구매하시면 : 배송비 2,000원 (2만원이상 구매 시 무료배송)
도서와 음반/DVD를 함께 구매하시면 : 배송비 1,500원 1만원이상 구매 시 무료배송)
도서와 잡지/만화/기프트/중고직배송상품을 함께 구매하시면 : 2,000원 (1만원이상 구매 시 무료배송)
업체직접배송상품을 구매시 : 업체별로 상이한 배송비 적용

   * 세트상품의 경우 부분취소 시 추가 배송비가 부과될 수 있습니다.
   * 북카트에서 배송비없애기 버튼을 클릭하셔서, 동일업체상품을 조금 더 구매하시면, 배송비를 절약하실 수 있습니다.
해외배송 안내
인터파크도서에서는 국내에서 주문하시거나 해외에서 주문하여 해외로 배송을 원하실 경우 DHL과 특약으로 책정된 요금표에
   의해 개인이 이용하는 경우보다 배송요금을 크게 낮추며 DHL(www.dhl.co.kr)로 해외배송 서비스를 제공합니다.
해외배송은 도서/CD/DVD 상품에 한해 서비스하고 있으며, 다른 상품을 북카트에 함께 담으실 경우 해외배송이 불가합니다.
해외주문배송 서비스는 인터파크 도서 회원 가입을 하셔야만 신청 가능합니다.
알아두세요!!!
도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 취소될 수 있습니다.
오픈마켓업체의 배송지연시 주문이 자동으로 취소될 수 있습니다.
출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 기준으로 배송됩니다.
유통의 특성상 출고기간은 예정보다 앞당겨지거나 늦춰질 수 있습니다.
택배사 배송일인 서울 및 수도권은 1~2일, 지방은 2~3일, 도서, 산간, 군부대는 3일 이상의 시간이 소요됩니다.
  • 0개
  • 0개