Description
당신의 코드를 변화시킬 클린 코드 혁명
개발자 성장을 위한 최적의 코드 작성법
클린 코드를 실무에 적용하는 방법을 배워보세요. 이 책은 자바스크립트, PHP, 파이썬, 자바 등 다양한 프로그래밍 언어를 활용한 예제를 제공합니다. 다양한 언어를 넘나들며 가독성, 결합성, 테스트 가능성, 보안, 확장성 등 클린 코드의 핵심 개념을 깊이 있게 탐구합니다. 복잡한 코드베이스를 효과적으로 확장하고 유지 관리하는 방법부터 코드 스멜을 식별하고 해결하는 방법까지 소개합니다. 이 책은 모든 개발자에게 필수 덕목인 클린 코드 작성법을 소개하는 강력한 비법서입니다. 클린 코드의 이점을 직접 경험하고, 여러분의 개발 스킬을 한 단계 업그레이드할 차례입니다.

저자

막시밀리아노콘티에리

저자:막시밀리아노콘티에리
25년동안소프트웨어업계에종사했으며동시에대학에서도강의를해왔습니다.클린코드,리팩터링,테스트주도개발및코드스멜에관해꾸준히글을쓰고있으며인기블로그플랫폼에매주두어편의기사를작성합니다.선언적및행동적코드의팬이며소프트웨어기본사항을사용해우아하고강력한솔루션을구축하기를즐깁니다.

역자:이태영
해외에서유년시절을보내면서컴퓨터공학학사,석사학위를취득하고이후에는스타트업부터대규모기업들을다니면서애드테크,마케팅등의도메인에서필요로한소프트웨어개발업무경험을쌓아왔습니다.다양한개발경험을기반으로현재는스타트업에서소프트웨어엔지니어로일합니다.

목차


CHAPTER1클린코드
_1.1코드스멜이란무엇인가요?
_1.2리팩터링은무엇인가요?
_1.3레시피는무엇인가요?
_1.4왜클린코드인가요?
_1.5가독성,성능혹은둘다
_1.6소프트웨어유형
_1.7기계생성코드
_1.8이책에서사용하는표현
_1.9디자인패턴
_1.10프로그래밍언어패러다임
_1.11객체vs.클래스
_1.12변경성

CHAPTER2공리설정
_2.0소개
_2.1왜모델인가요?
_2.2왜추상적인가요?
_2.3왜프로그래밍이가능해야하나요?
_2.4왜부분적인가요?
_2.5왜설명가능해야하나요?
_2.6왜현실에관한것인가요?
_2.7규칙유추하기
_2.8유일무이한소프트웨어설계원칙

CHAPTER3빈약한모델
_3.0소개
_3.1빈약한객체를풍성한객체로변환하기
_3.2객체의본질파악하기
_3.3객체에서세터제거하기
_3.4빈약한코드생성기제거하기
_3.5자동으로구현된속성제거하기
_3.6DTO제거하기
_3.7빈생성자완성하기
_3.8게터제거하기
_3.9객체의난장판방지하기
_3.10동적속성제거하기

CHAPTER4기본형집착
_4.0소개
_4.1작은객체생성하기
_4.2기본형데이터구체화하기
_4.3연관배열재구성하기
_4.4문자열남용제거하기
_4.5타임스탬프구체화하기
_4.6하위집합을객체로구체화하기
_4.7문자열유효성검증구체화하기
_4.8불필요한속성제거하기
_4.9날짜구간생성하기

CHAPTER5가변성
_5.0소개
_5.1var를const로변경하기
_5.2변수를가변적이게선언하기
_5.3본질변경금지하기
_5.4변경가능한상수배열피하기
_5.5지연된초기화제거하기
_5.6변경가능한상수고정하기
_5.7부작용제거하기
_5.8호이스팅방지하기

CHAPTER6선언적코드
_6.0소개
_6.1재사용변수범위좁히기
_6.2빈줄제거하기
_6.3버전이지정된메서드제거하기
_6.4이중부정제거하기
_6.5잘못배치된책임변경하기
_6.6명시적반복대체하기
_6.7설계결정기록하기
_6.8매직넘버를상수로바꾸기
_6.9‘무엇’과‘어떻게’분리하기
_6.10정규표현식문서화하기
_6.11괴상한조건문재작성하기
_6.12저급한메서드제거하기
_6.13콜백지옥에서벗어나기
_6.14올바른오류메시지생성하기
_6.15마법변환피하기

CHAPTER7명명
_7.0소개
_7.1약어확장하기
_7.2도우미와유틸리티이름변경및분리하기
_7.3my-객체이름변경하기
_7.4result변수이름변경하기
_7.5타입이포함된변수이름변경하기
_7.6긴이름변경하기
_7.7추상적인이름변경하기
_7.8맞춤법오류수정하기
_7.9속성에서클래스명제거하기
_7.10클래스와인터페이스에서첫글자제거하기
_7.11basic/do함수이름바꾸기
_7.12복수형클래스를단수로변환하기
_7.13이름에서Collection제거하기
_7.14클래스이름에서Impl접두사/접미사제거하기
_7.15역할에따라인수이름변경하기
_7.16중복된매개변수이름제거하기
_7.17이름에서불필요한컨텍스트제거하기
_7.18data명칭피하기

CHAPTER8주석
_8.0소개
_8.1주석처리된코드제거하기
_8.2더이상사용하지않는주석제거하기
_8.3논리적인주석제거하기
_8.4게터주석제거하기
_8.5주석을함수명으로변환하기
_8.6메서드내부주석제거하기
_8.7주석을테스트로대체하기

CHAPTER9표준
_9.0소개
_9.1코딩표준준수하기
_9.2들여쓰기표준화하기
_9.3대소문자규칙통일하기
_9.4영어로코드작성하기
_9.5매개변수순서통일하기
_9.6깨진유리창수정하기

CHAPTER10복잡성
_10.0소개
_10.1반복되는코드제거하기
_10.2설정/구성및기능토글제거하기
_10.3속성으로상태변경하기
_10.4코드에서교묘함제거하기
_10.5다중프라미스끊기
_10.6긴협업체인끊기
_10.7메서드를객체로추출하기
_10.8배열생성자관리하기
_10.9폴터가이스트객체제거하기

CHAPTER11블로터
_11.0소개
_11.1너무긴메서드나누기
_11.2과도한인수줄이기
_11.3과도한변수줄이기
_11.4과도한괄호제거하기
_11.5과도한메서드제거하기
_11.6너무많은속성나누기
_11.7import목록줄이기
_11.8and함수나누기
_11.9뚱뚱한인터페이스분리하기

CHAPTER12YAGNI원칙
_12.0소개
_12.1불필요한코드제거하기
_12.2다이어그램대신코드사용하기
_12.3하나의하위클래스를가진클래스리팩터링하기
_12.4일회성인터페이스제거하기
_12.5디자인패턴남용제거하기
_12.6비즈니스컬렉션대체하기

CHAPTER13빠른실패
_13.0소개
_13.1재할당변수리팩터링하기
_13.2전제조건적용하기
_13.3더엄격한매개변수사용하기
_13.4switch문에서기본값제거하기
_13.5순회하는동안컬렉션수정방지하기
_13.6해시와동등성재정의하기
_13.7기능변경없이리팩터링하기

CHAPTER14if문
_14.0소개
_14.1우발적if문을다형성으로대체하기
_14.2이벤트의플래그변수이름변경하기
_14.3boolean변수재구성하기
_14.4switch/case/elseif문대체하기
_14.5하드코딩된if조건문을컬렉션으로대체하기
_14.6boolean을단락평가조건으로변경하기
_14.7암시적else추가하기
_14.8조건부화살표코드재작성하기
_14.9무분별한단락평가방지하기
_14.10중첩된화살표코드재작성하기
_14.11조건검사를위한boolean값반환방지하기
_14.12boolean비교변경하기
_14.13긴삼항식에서추출하기
_14.14비다형성함수를다형성으로변환하기
_14.15동등비교변경하기
_14.16하드코딩된비즈니스조건재정의하기
_14.17불필요한boolean제거하기
_14.18중첩된삼항식재작성하기

CHAPTER15null
_15.0소개
_15.1null객체생성하기
_15.2선택적체이닝제거하기
_15.3선택적속성을컬렉션으로변환하기
_15.4실제객체로null대체하기
_15.5null을사용하지않고알려지지않은위치표현하기

CHAPTER16섣부른최적화
_16.0소개
_16.1객체ID피하기
_16.2섣부른최적화제거하기
_16.3비트단위의섣부른최적화제거하기
_16.4과도한일반화줄이기
_16.5구조적최적화변경하기
_16.6앵커보트제거하기
_16.7도메인객체에서캐시추출하기
_16.8구현에기반한콜백이벤트제거하기
_16.9생성자에서쿼리제거하기
_16.10소멸자에서코드제거하기

CHAPTER17결합도
_17.0소개
_17.1숨겨진가정을명시적으로표현하기
_17.2싱글턴대체하기
_17.3신객체나누기
_17.4확산적변경나누기
_17.5특수플래그값을일반값으로변환하기
_17.6산탄총수술제거하기
_17.7선택적인수제거하기
_17.8기능에대한욕심방지하기
_17.9중간자제거하기
_17.10기본인수를맨끝으로이동하기
_17.11파급효과피하기
_17.12비즈니스객체에서우발적메서드제거하기
_17.13사용자인터페이스에서비즈니스코드제거하기
_17.14결합을클래스로대체하기
_17.15데이터덩어리리팩터링하기
_17.16부적절한친밀성분리하기
_17.17대체가능한객체대체하기

CHAPTER18전역
_18.0소개
_18.1전역함수구체화하기
_18.2정적함수구체화하기
_18.3goto를구조화된코드로대체하기
_18.4전역클래스제거하기
_18.5전역날짜생성변경하기

CHAPTER19계층
_19.0소개
_19.1깊은상속끊기
_19.2요요계층분리하기
_19.3코드재사용을위한하위분류나누기
_19.4is-a관계를동작으로변경하기
_19.5중첩클래스제거하기
_19.6격리된클래스이름변경하기
_19.7구상클래스를final로만들기
_19.8클래스상속명시적으로정의하기
_19.9비어있는클래스마이그레이션하기
_19.10섣부른분류지연하기
_19.11protected속성제거하기
_19.12비어있는구현완성시키기

CHAPTER20테스트
_20.0소개
_20.1private메서드테스트하기
_20.2어서션에설명추가하기
_20.3assertTrue를특정어서션으로마이그레이션하기
_20.4모의객체를실제객체로대체하기
_20.5일반어서션다듬기
_20.6불규칙한테스트제거하기
_20.7부동소수점에대한어서션변경하기
_20.8테스트데이터를실제데이터로변경하기
_20.9캡슐화를위반하는테스트보호하기
_20.10관련없는테스트정보제거하기
_20.11모든병합요청에대해커버리지추가하기
_20.12날짜에의존하는테스트재작성하기
_20.13새로운프로그래밍언어배우기

CHAPTER21기술부채
_21.0소개
_21.1프로덕션종속코드제거하기
_21.2결함목록제거하기
_21.3경고/엄격모드해제제거하기
_21.4TODO와FIXME방지및제거하기

CHAPTER22예외
_22.0소개
_22.1비어있는예외블록제거하기
_22.2불필요한예외제거하기
_22.3예상가능한상황을위한예외재작성하기
_22.4중첩된try/catch재작성하기
_22.5반환코드를예외로대체하기
_22

출판사 서평

당신의코드를변화시킬클린코드혁명
개발자성장을위한최적의코드작성법

클린코드를실무에적용하는방법을배워보세요.이책은자바스크립트,PHP,파이썬,자바등다양한프로그래밍언어를활용한예제를제공합니다.다양한언어를넘나들며가독성,결합성,테스트가능성,보안,확장성등클린코드의핵심개념을깊이있게탐구합니다.복잡한코드베이스를효과적으로확장하고유지관리하는방법부터코드스멜을식별하고해결하는방법까지소개합니다.이책은모든개발자에게필수덕목인클린코드작성법을소개하는강력한비법서입니다.클린코드의이점을직접경험하고,여러분의개발스킬을한단계업그레이드할차례입니다.

클린코드를실무에어떻게적용해야할지고민하고있다면,
깔끔하게작성한코드로훌륭하게협업하고싶다면,
개발자라면꼭읽어야할클린코드실습서

코드를작성하는것은예술과도같습니다.클린코드를통해여러분의프로그래밍작품을더아름답게만들어보세요.이책은개발자가실제업무에서직면하는다양한문제를클린코드의원칙을통해해결하는방법을소개합니다.단순히좋은코드와나쁜코드를구분하는것을넘어,실제개발환경에서클린코드를구현하고유지하는구체적인방법론을제공합니다.자바,파이썬,PHP,C,자바스크립트등다양한언어의예제를통해클린코드의원칙을실제로적용해보고,가독성이높고유지보수하기용이한코드를작성하는방법을배워보세요.

누가이책을읽어야할까요?
클린코드를구현하고싶은프로그래머,소프트웨어개발자,아키텍트등현업개발자
이제막개발자의길에들어선초보개발자,관련학부생,개발자취업준비생

어떤내용을배우나요?
클린코드가개발자에게왜필요한지,실제업무에어떻게적용할수있는지설명합니다.
구체적인예제와실습을통해클린코드의원칙을직관적으로이해할수있습니다.
리팩터링의기술을단계별로터득하고,코드스멜을식별하고해결하는방법을알아봅니다.
개발자로서의성장과더나은코드작성을위한실질적인지침을얻을수있습니다.

이책은실무에바로적용가능한클린코드비법을소개하는실습서입니다.이론적인설명과실제예제코드를통해클린코드개념을명확하게이해해보세요.이개념을여러분의코드에직접적용해보면클린코드를작성하는스킬이차근차근향상될것입니다.코드의품질을높이고,유지보수를용이하게하며,개발자로서의경쟁력을강화하고싶다면이책을통해클린코드의세계로첫발을내딛을차례입니다.