클린 코드 Clean Code : 애자일 소프트웨어 장인 정신

클린 코드 Clean Code : 애자일 소프트웨어 장인 정신

$34.06
Description
프로그래머, 소프트웨어 공학도, 프로젝트 관리자, 팀 리더, 시스템 분석가에게 도움이 될
더 나은 코드를 만드는 책
『Clean Code(클린 코드)』은 오브젝트 멘토(Object Mentor)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 프로그래밍 실력을 높여줄 것이다. 여러분이 노력만 한다면. 어떤 노력이 필요하냐고? 코드를 읽어야 한다. 아주 많은 코드를. 그리고 코드를 읽으면서 그 코드의 무엇이 옳은지, 그른지 생각도 해야 한다. 좀 더 중요하게는 전문가로서 자신이 지니는 가치와 장인으로서 자기 작품에 대한 헌신을 돌아보게 된다.
저자

로버트C.마틴

저자:로버트C.마틴
‘밥’이라고불리며,오브젝트멘토(ObjectMentor,Inc.)의창립자이자대표다.밥과그의소프트웨어컨설턴트팀은객체지향디자인,패턴,UML,애자일방법론,그리고익스트림프로그래밍으로전세계의고객에게서비스를제공하고있다.
소프트웨어산업의지도자로서C++리포트의편집장,애자일연합의의장을맡아업계에기여했다.
또한엉클밥컨설팅(UncleBobConsulting)의창립자며,아들미카마틴과함께클린코더스(CleanCoders)를세웠다.

역자:이해영
포항공과대학교컴퓨터공학과학부와퍼듀대학교전자계산학과대학원을졸업했다.현재프리랜서번역가다.

역자:박재호
전ICON치프아키텍트(ChiefArchitect).임베디드시스템개발,기업용백업소프트웨어개발,방송국콘텐츠수신제한시스템개발과운영지원,클라우드에서동작하는서비스개발에이르기까지다양한실무경험을토대로고성능고가용성시스템을설계하고있다.집필및번역한책이40여권에이른다.

목차

1장깨끗한코드
코드가존재하리라
나쁜코드
나쁜코드로치르는대가
__원대한재설계의꿈
__태도
__원초적난제
__깨끗한코드라는예술?
__깨끗한코드란?

우리들생각
우리는저자다
보이스카우트규칙
프리퀄과원칙
결론
참고문헌

2장의미있는이름
들어가면서
의도를분명히밝혀라
그릇된정보를피하라
의미있게구분하라
발음하기쉬운이름을사용하라
검색하기쉬운이름을사용하라
인코딩을피하라
__헝가리식표기법
__멤버변수접두어
__인터페이스클래스와구현클래스

자신의기억력을자랑하지마라
클래스이름
메서드이름
기발한이름은피하라
한개념에한단어를사용하라
말장난을하지마라
해법영역에서가져온이름을사용하라
문제영역에서가져온이름을사용하라
의미있는맥락을추가하라
불필요한맥락을없애라
마치면서

3장함수
작게만들어라!
__블록과들여쓰기

한가지만해라!
__함수내섹션

함수당추상화수준은하나로!
__위에서아래로코드읽기:내려가기규칙

Switch문
서술적인이름을사용하라!
함수인수
__많이쓰는단항형식
__플래그인수
__이항함수
__삼항함수
__인수객체
__인수목록
__동사와키워드

부수효과를일으키지마라!
__출력인수

명령과조회를분리하라!
오류코드보다예외를사용하라!
__Try/Catch블록뽑아내기
__오류처리도한가지작업이다.
__Error.java의존성자석

반복하지마라!
구조적프로그래밍
함수를어떻게짜죠?
결론
참고문헌

4장주석
주석은나쁜코드를보완하지못한다
코드로의도를표현하라!
좋은주석
__법적인주석
__정보를제공하는주석
__의도를설명하는주석
__의미를명료하게밝히는주석
__결과를경고하는주석
__TODO주석
__중요성을강조하는주석
__공개API에서Javadocs

나쁜주석
__주절거리는주석
__같은이야기를중복하는주석
__오해할여지가있는주석
__의무적으로다는주석
__이력을기록하는주석
__있으나마나한주석
__무서운잡음
__함수나변수로표현할수있다면주석을달지마라
__위치를표시하는주석
__닫는괄호에다는주석
__공로를돌리거나저자를표시하는주석
__주석으로처리한코드
__HTML주석
__전역정보
__너무많은정보
__모호한관계
__함수헤더
__비공개코드에서Javadocs
__예제

참고문헌


5장형식맞추기
형식을맞추는목적
적절한행길이를유지하라
__신문기사처럼작성하라
__개념은빈행으로분리하라
__세로밀집도
__수직거리
__세로순서

가로형식맞추기
__가로공백과밀집도
__가로정렬
__들여쓰기

가짜범위
팀규칙
밥아저씨의형식규칙

6장객체와자료구조
자료추상화
자료/객체비대칭
디미터법칙
__기차충돌
__잡종구조
__구조체감추기

자료전달객체
__활성레코드

결론
참고문헌

7장오류처리
오류코드보다예외를사용하라
Try-Catch-Finally문부터작성하라
미확인unchecked예외를사용하라
예외에의미를제공하라
호출자를고려해예외클래스를정의하라
정상흐름을정의하라
null을반환하지마라
null을전달하지마라
결론
참고문헌

8장경계
외부코드사용하기
경계살피고익히기
log4j익히기
학습테스트는공짜이상이다
아직존재하지않는코드를사용하기
깨끗한경계
참고문헌

9장단위테스트
TDD법칙세가지
깨끗한테스트코드유지하기
__테스트는유연성,유지보수성,재사용성을제공한다

깨끗한테스트코드
__도메인에특화된테스트언어
__이중표준

테스트당assert하나
__테스트당개념하나

F.I.R.S.T.
결론
참고문헌

10장클래스
클래스체계
__캡슐화

클래스는작아야한다!
__단일책임원칙
__응집도Cohesion
__응집도를유지하면작은클래스여럿이나온다

변경하기쉬운클래스
__변경으로부터격리

참고문헌

11장시스템
도시를세운다면?
시스템제작과시스템사용을분리하라
__Main분리
__팩토리
__의존성주입

확장
__횡단(cross-cutting)관심사

자바프록시
순수자바AOP프레임워크
AspectJ관점
테스트주도시스템아키텍처구축
의사결정을최적화하라
명백한가치가있을때표준을현명하게사용하라
시스템은도메인특화언어가필요하다
결론
참고문헌

12장창발성(創發性)
창발적설계로깔끔한코드를구현하자
단순한설계규칙1:모든테스트를실행하라
단순한설계규칙2~4:리팩터링
중복을없애라
표현하라
클래스와메서드수를최소로줄여라
결론
참고문헌

13장동시성
동시성이필요한이유?
__미신과오해

난관
동시성방어원칙
__단일책임원칙SingleResponsibilityPrinciple,SRP
__따름정리corollary:자료범위를제한하라
__따름정리:자료사본을사용하라
__따름정리:스레드는가능한독립적으로구현하라

라이브러리를이해하라
__스레드환경에안전한컬렉션

실행모델을이해하라
__생산자-소비자Producer-Consumer
__읽기-쓰기Readers-Writers
__식사하는철학자들DiningPhilosophers

동기화하는메서드사이에존재하는의존성을이해하라
동기화하는부분을작게만들어라
올바른종료코드는구현하기어렵다
스레드코드테스트하기
__말이안되는실패는잠정적인스레드문제로취급하라
__다중스레드를고려하지않은순차코드부터제대로돌게만들자
__다중스레드를쓰는코드부분을다양한환경에쉽게끼워넣을수있게스레드코드를구현하라
__다중스레드를쓰는코드부분을상황에맞게조율할수있게작성하라
__프로세서수보다많은스레드를돌려보라
__다른플랫폼에서돌려보라
__코드에보조코드instrument를넣어돌려라.강제로실패를일으키게해보라
__직접구현하기
__자동화

결론
참고문헌

14장점진적인개선
Args구현
__어떻게짰느냐고?

Args:1차초안
__그래서멈췄다
__점진적으로개선하다

String인수
결론

15장JUnit들여다보기
JUnit프레임워크
결론

16장SerialDate리팩터링
첫째,돌려보자
둘째,고쳐보자
결론
참고문헌

17장냄새와휴리스틱

주석
__C1:부적절한정보
__C2:쓸모없는주석
__C3:중복된주석
__C4:성의없는주석
__C5:주석처리된코드

환경
__E1:여러단계로빌드해야한다
__E2:여러단계로테스트해야한다

함수
__F1:너무많은인수
__F2:출력인수
__F3:플래그인수
__F4:죽은함수

일반
__G1:한소스파일에여러언어를사용한다
__G2:당연한동작을구현하지않는다
__G3:경계를올바로처리하지않는다
__G4:안전절차무시
__G5:중복
__G6:추상화수준이올바르지못하다
__G7:기초클래스가파생클래스에의존한다
__G8:과도한정보
__G9:죽은코드
__G10:수직분리
__G11:일관성부족
__G12:잡동사니
__G13:인위적결합
__G14:기능욕심
__G15:선택자인수
__G16:모호한의도
__G17:잘못지운책임
__G18:부적절한static함수
__G19:서술적변수
__G20:이름과기능이일치하는함수
__G21:알고리즘을이해하라
__G22:논리적의존성은물리적으로드러내라
__G23:If/Else혹은Switch/Case문보다다형성을사용하라
__G24:표준표기법을따르라
__G25:매직숫자는명명된상수로교체하라
__G26:정확하라
__G27:관례보다구조를사용하라
__G28:조건을캡슐화하라
__G29:부정조건은피하라
__G30:함수는한가지만해야한다
__G31:숨겨진시간적인결합
__G32:일관성을유지하라
__G33:경계조건을캡슐화하라
__G34:함수는추상화수준을한단계만내려가야한다
__G35:설정정보는최상위단계에둬라
__G36:추이적탐색을피하라

자바
__J1:긴import목록을피하고와일드카드를사용하라
__J2:상수는상속하지않는다
__J3:상수대Enum

이름
__N1:서술적인이름을사용하라
__N2:적절한추상화수준에서이름을선택하라
__N3:가능하다면표준명명법을사용하
__N4:명확한이름
__N5:긴범위는긴이름을사용하라
__N6:인코딩을피하라
__N7:이름으로부수효과를설명하라

테스트
__T1:불충분한테스트
__T2:커버리지도구를사용하라!
__T3:사소한테스트를건너뛰지마라
__T4:무시한테스트는모호함을뜻한다
__T5:경계조건을테스트하라
__T6:버그주변은철저히테스트하라
__T7:실패패턴을살펴라
__T8:테스트커버리지패턴을살펴라
__T9:테스트는빨라야한다

결론
참고문헌


부록A동시성II

클라이언트/서버예제
__서버
__스레드추가하기
__서버살펴보기
__결론

가능한실행경로
__경로수

출판사 서평

이책을읽은독자는다음내용을알게된다.

-.좋은코드와나쁜코드를구분하는방법
-.좋은코드를작성하는방법과나쁜코드를좋은코드로바꾸는방법
-.좋은이름,좋은함수,좋은객체,좋은클래스를작성하는방법
-.가독성이높아지도록코드형식을맞추는방법
-.코드논리를흩뜨리지않고서오류처리를완벽하게구현하는방법
-.단위테스트와테스트주도개발을적용하는방법

이책은더나은코드를만들려고애쓰는프로그래머,소프트웨어공학도,프로젝트관리자,팀리더,시스템분석가가반드시읽어야할책이다