디자인 패턴의 아름다움

왕정
528p
구매 가능한 곳
content
평가하기
코멘트
더보기

구글러의 코드 품질 관리 비법을 공개한다. 코드의 품질을 매우 중요시했던 구글러들은 코드에 달린 주석에서 작은 마침표 오류까지 수정을 요청하기에 이르렀고, 그만큼 엄격했던 코드 품질 관리 덕분에 프로젝트의 유지 관리 비용이 매우 낮아졌다. 이와 같은 경험을 집대성한 이 책에서는 200여 개의 실제 프로젝트 사례를 바탕으로 객체지향 패러다임, 설계 원칙, 코딩 규칙, 리팩터링 기법, 디자인 패턴의 5가지 측면에서 고품질의 코드 작성 방법을 상세히 배울 수 있다.

NEW 팝콘 붕어싸만코

문상훈을 울린 달콤한 만남

빙그레 붕어싸만코 · AD

NEW 팝콘 붕어싸만코

문상훈을 울린 달콤한 만남

빙그레 붕어싸만코 · AD

저자/역자

목차

옮긴이 머리말 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 CHAPTER 2 객체지향 프로그래밍 패러다임 23 2.1 객체지향이란 무엇인가? 23 __2.1.1 객체지향 프로그래밍과 객체지향 프로그래밍 언어 23 __2.1.2 엄격하게 정의되지 않은 객체지향 프로그래밍 언어 25 __2.1.3 객체지향 분석과 객체지향 설계 26 __2.1.4 UML에 대한 참고 사항 27 __2.1.5 생각해보기 28 2.2 캡슐화, 추상화, 상속, 다형성이 등장한 이유 28 __2.2.1 캡슐화 28 / 2.2.2 추상화 31 / 2.2.3 상속 33 / __2.2.4 다형성 35 / 2.2.5 생각해보기 39 2.3 객체지향 분석, 객체지향 설계, 객체지향 프로그래밍을 수행하는 방법 40 __2.3.1 예제 소개와 난이도 분석 40 __2.3.2 객체지향 분석 수행 방법 41 __2.3.3 객체지향 설계 방법 45 __2.3.4 객체지향 프로그래밍을 하는 방법 53 __2.3.5 생각해보기 55 2.4 객체지향 프로그래밍, 절차적 프로그래밍, 함수형 프로그래밍의 차이 55 __2.4.1 절차적 프로그래밍 55 __2.4.2 객체지향 프로그래밍과 절차적 프로그래밍의 비교 59 __2.4.3 함수형 프로그래밍 62 __2.4.4 객체지향 프로그래밍과 함수형 프로그래밍의 비교 69 __2.4.5 생각해보기 69 2.5 객체지향 프로그래밍처럼 보이지만 실제로는 절차적 프로그래밍 70 __2.5.1 getter, setter 메서드 남용 70 __2.5.2 전역 변수와 전역 메서드의 남용 74 __2.5.3 데이터와 메서드 분리로 클래스 정의하기 77 __2.5.4 생각해보기 79 2.6 빈약한 도메인 모델에 기반한 전통적인 개발 방식은 OOP를 위반하는가? 79 __2.6.1 빈약한 도메인 모델에 기반한 전통적인 개발 방식 80 __2.6.2 풍성한 도메인 모델에 기반한 DDD 개발 방식 82 __2.6.3 두 가지 개발 방식의 비교 83 __2.6.4 빈약한 도메인 모델에 기반한 전통적인 개발 방식이 널리 사용되는 이유 90 __2.6.5 풍성한 도메인 모델에 기반한 DDD 개발 방식의 응용 시나리오 91 __2.6.6 생각해보기 92 2.7 추상 클래스와 인터페이스 93 __2.7.1 추상 클래스와 인터페이스의 정의와 차이점 93 __2.7.2 추상 클래스와 인터페이스의 의미 97 __2.7.3 추상 클래스와 인터페이스의 모의 구현 100 __2.7.4 추상 클래스와 인터페이스의 응용 시나리오 102 __2.7.5 생각해보기 102 2.8 인터페이스 기반 프로그래밍: 모든 클래스에 대해 인터페이스를 정의해야 할까? 102 __2.8.1 인터페이스를 이해하는 다양한 방법 103 __2.8.2 설계 철학을 실제로 적용해보자 104 __2.8.3 인터페이스의 남용을 방지하려면 어떻게 해야 할까? 108 __2.8.4 생각해보기 109 2.9 상속보다 합성 109 __2.9.1 상속이 더 이상 사용되지 않는 이유 109 __2.9.2 합성이 상속에 비해 나은 장점 112 __2.9.3 합성을 사용할지 상속을 사용할지 결정하기 114 __2.9.4 생각해보기 115 CHAPTER 3 설계 원칙 117 3.1 단일 책임 원칙 117 __3.1.1 단일 책임 원칙의 정의 및 해석 117 __3.1.2 클래스에 단일 책임이 있는지 판단하는 방법 118 __3.1.3 클래스의 책임이 가능한 한 자세하게 설명되어 있는지 여부 121 __3.1.4 생각해보기 123 3.2 개방 폐쇄 원칙 123 __3.2.1 확장할 때는 개방, 수정할 때는 폐쇄 123 __3.2.2 코드를 수정하는 것은 개방 폐쇄 원칙을 위반하는 것일까? 129 __3.2.3 확장할 때는 개방, 수정할 때는 폐쇄를 달성하는 방법 131 __3.2.4 프로젝트에 개방 폐쇄 원칙을 유연하게 적용하는 방법 133 _

출판사 제공 책 소개

객체지향 프로그래밍, 설계 원칙, 코딩 규칙, 리팩터링, 디자인 패턴으로 코드 품질을 높이자 개발자는 연차가 쌓일수록 코드의 품질을 올리고 싶은 욕구에 휩싸인다. 하지만 안타깝게도 많은 기업의 개발 부서는 기능 하나하나를 만들어내고 일정을 쳐내는 데 급급한 실정이다. 작성해놓은 코드가 동작만 한다면 다시 들춰볼 시간도, 여유도 없다. 그런데 이렇게 급하게 만든 코드를 유지 보수하다 보면 막막해져서 모든 코드를 삭제하고 다시 작성하고 싶어진다. 그렇다면 고품질의 코드는 어떻게 작성할까? 엄격한 코드 품질 관리로 유지 보수 비용을 현저히 낮추는 개발 환경(구글)에서 근무했던 저자는 코드 설계에 대한 이론 지식을 먼저 갖추는 것을 추천한다. 코드 설계 이론 지식은 코드의 유지 보수성, 가독성, 확장성, 유연성, 간결성, 재사용성, 테스트 용이성을 높이는 데 도움이 된다. 책의 1장에서는 고품질의 코드란 무엇인지 정의하고 과도한 설계를 피하는 법을 알려준다. 2장에서는 설계 원칙과 디자인 패턴의 기초에 해당하는 객체지향 프로그래밍을 소개하고, 3장에서는 SOLID 원칙, KISS 원칙, YAGNI 원칙, DRY 원칙, LoD 원칙 등 중요한 설계 원칙을 소개한다. 4장에서는 명명, 주석, 코드 스타일, 코딩 팁을 포함한 코딩 규칙을 배울 수 있고, 5장에서는 리팩터링의 네 가지 요소와 단위 테스트, 코드 테스트 용이성, 디커플링 등을 다루고 예제와 함께 리팩터링 기술을 익힌다. 6장, 7장, 8장은 각각 생성, 구조, 행동 세 가지 분류로 나눠 22가지 디자인 패턴을 소개한다. 6장에서는 싱글턴 패턴, 팩터리 패턴, 빌더 패턴, 프로토타입 패턴을 포함한 생성 디자인 패턴을, 7장에서는 프록시 패턴, 데커레이터 패턴, 어댑터 패턴, 브리지 패턴, 퍼사드 패턴, 복합체 패턴, 플라이웨이트 패턴을 포함한 구조 디자인 패턴을 소개한다. 8장에서는 옵서버 패턴, 템플릿 메서드 패턴, 전략 패턴, 책임 연쇄 패턴, 상태 패턴, 반복자 패턴, 비지터 패턴, 메멘토 패턴, 커맨드 패턴, 인터프리터 패턴, 중재자 패턴 등 행동 디자인 패턴을 소개한다. 이 책의 코드는 대부분 자바로 작성되었지만, 다루는 내용과 설명은 특정 프로그래밍 언어와 관련이 없으며 어떤 프로그래밍 언어를 사용하더라도 모두 읽을 수 있다. 코딩 능력을 향상하고 싶은 모든 개발자들에게 추천한다.
  • 데이터 출처
  • 서비스 이용약관
  • 개인정보 처리방침
  • 회사 안내
  • © 2025 by WATCHA, Inc. All rights reserved.