자바 코딩의 기술 (똑똑하게 코딩하는 법 | 현장에서 뽑은 70가지 예제로 배우는 코드 잘 짜는 법)

자바 코딩의 기술 (똑똑하게 코딩하는 법 | 현장에서 뽑은 70가지 예제로 배우는 코드 잘 짜는 법)

$22.00
Description
내 코드, 정말 괜찮을까?
전문가의 코드와 비교하면서 배운다
코딩 스킬을 개선하는 가장 좋은 방법은 전문가의 코드를 읽는 것이다. 오픈 소스 코드를 읽으면서 이해하면 좋지만, 너무 방대하고 스스로 맥락을 찾는 게 어려울 수 있다. 그럴 땐 이 책처럼 현장에서 자주 발견되는 문제 유형 70가지와 해법을 비교하면서 자신의 코드에서 개선할 점을 찾는 것이 좋다.

적절한 코드를 작성하는 법을 배운다
너무 과하지 않으면서 간결하게, 군더더기 없이, 딱 필요한 만큼만 있는 코드를 작성하는 방법을 배워보자. BufferedReader를 br로 선언하는가? buffered로 선언하는가? 왜 reader로 선언해야 한다고 해법을 제시할까? 이 책은 변수명을 어떻게 짓는가, 주석은 어떻게 써야 하는가부터 시작해서 단계별로 주제를 심화해가면서 적절한 코드란 무엇인지 알려준다.

훌륭한 코드란 기능을 구현하는 것 이상이다
별거 아닌 것 같은 디테일 하나가 코드를 더 멋지게 만든다. 가독성이 좋아지고, 유지보수성이 좋아지고, 변경에 유연하고, 강건한 코드, 더 빠른 코드를 작성할 수 있게 해준다. 작지만 중요한 디테일을 꼼꼼하게 지적하고, 더 나은 프로그래머가 되는 여정을 보여줄 것이다.

[책 속의 문구]
명심하세요! 바보는 도구를 사용해도 바보입니다!

[예제 코드]
ㆍ 길벗 깃허브 저장소: https://github.com/gilbutITbook/007025
ㆍ 원서 소스 코드: https://pragprog.com/titles/javacomp/source_code
저자

사이먼하러

사이먼하러박사는항상새로운기술,프레임워크,아이디어를탐색하는개발자이자선생님입니다.그의친구들은그를클린코드전도사라고부릅니다.

목차

1장우선정리부터
__1.1쓸모없는비교피하기
__1.2부정피하기
__1.3불표현식을직접반환
__1.4불표현식간소화
__1.5조건문에서NullPointerException피하기
__1.6스위치실패피하기
__1.7항상괄호사용하기
__1.8코드대칭이루기
__1.91장에서배운내용

2장코드스타일레벨업
__2.1매직넘버를상수로대체
__2.2정수상수대신열거형
__2.3For루프대신For-Each
__2.4순회하며컬렉션수정하지않기
__2.5순회하며계산집약적연산하지않기
__2.6새줄로그루핑
__2.7이어붙이기대신서식화
__2.8직접만들지말고자바API사용하기
__2.92장에서배운내용

3장슬기롭게주석사용하기
__3.1지나치게많은주석없애기
__3.2주석처리된코드제거
__3.3주석을상수로대체
__3.4주석을유틸리티메서드로대체
__3.5구현결정설명하기
__3.6예제로설명하기
__3.7패키지를JavaDoc으로구조화하기
__3.8클래스와인터페이스를JavaDoc으로구조화하기
__3.9메서드를JavaDoc으로구조화하기
__3.10생성자를JavaDoc으로구조화하기
__3.113장에서배운내용

4장올바르게명명하기
__4.1자바명명규칙사용하기
__4.2프레임워크에는Getter/Setter규칙적용
__4.3한글자로명명하지않기
__4.4축약쓰지않기
__4.5무의미한용어쓰지않기
__4.6도메인용어사용하기
__4.74장에서배운내용

5장문제발생에대비하기
__5.1빠른실패
__5.2항상가장구체적인예외잡기
__5.3메시지로원인설명
__5.4원인사슬깨지않기
__5.5변수로원인노출
__5.6타입변환전에항상타입검증하기
__5.7항상자원닫기
__5.8항상다수자원닫기
__5.9빈catch블록설명하기
__5.105장에서배운내용

6장올바르게드러내기
__6.1Given-When-Then으로테스트구조화
__6.2의미있는어서션사용하기
__6.3실제값보다기대값을먼저보이기
__6.4합당한허용값사용하기
__6.5예외처리는JUnit에맡기기
__6.6테스트설명하기
__6.7독립형테스트사용하기
__6.8테스트매개변수화
__6.9경계케이스다루기
__6.106장에서배운내용

7장객체디자인
__7.1불매개변수로메서드분할
__7.2옵션매개변수로메서드분할
__7.3구체타입보다추상타입
__7.4가변상태보다불변상태사용하기
__7.5상태와동작결합하기
__7.6참조누수피하기
__7.7널반환하지않기
__7.87장에서배운내용

8장데이터흐름
__8.1익명클래스대신람다사용하기
__8.2명령형방식대신함수형
__8.3람다대신메서드참조
__8.4부수효과피하기
__8.5복잡한스트림종료시컬렉트사용하기
__8.6스트림내예외피하기
__8.7널대신옵셔널
__8.8선택필드나매개변수피하기
__8.9옵셔널을스트림으로사용하기
__8.108장에서배운내용

9장실전준비
__9.1정적코드분석도구
__9.2팀내자바포맷통일
__9.3빌드자동화
__9.4지속적통합
__9.5생산준비와납품
__9.6콘솔출력대신로깅
__9.7다중스레드코드최소화및독립
__9.8고급동시실행추상화사용하기
__9.9프로그램속도향상
__9.10틀린가정알기
__9.119장에서배운내용

출판사 서평

대상독자
자바프로그래밍초보자나중급자가대상입니다.또한프로그래머과정을이제막시작한개발자를가르치는선생님에게유용한수업자료입니다.이책은자원처리나함수형프로그래밍,테스트에대해더최신인자바8문법에기반해팁과비결을제공합니다.
이책은자바기본문법을학습하고조건문과루프로간단한프로그램을만들수있고객체지향프로그래밍의기초를알고난후에읽어야합니다.FizzBuzz(준비되었나요?자기평가를해보세요참고,015쪽)같은간단한문제를컴파일하고실행하고해결하는코드정도는작성할수있어야합니다.간단한알고리즘을구현할수있어야하고리스트나큐,스택,맵같은기본적인자료
구조를사용하는방법도알아야합니다.또한이모든것이당연히즐거워야하고요!
복잡한문제를풀었을때큰만족감을느낀다면시작이매우좋은겁니다.하지만배울내용이산더미라는사실도물론알고있겠죠.기술을적용해보았는데자바프로그래밍이나일반적인프로그래밍경험이부족하다는사실을인정해야한다면이책을통해최대효과를거둘수있을것입니다.아마도클린코드와숙련된개발자가적용하는모범사례에대한감을아직키우지못했다는뜻일테니까요.

이제바뀔때가되었습니다!
물론〈이펙티브자바〉(인사이트,2018)와〈클린코드〉(인사이트,2013)처럼자바의코드품질과가독성,유지보수성,클린코드를다룬고급책을이미접했다면이미한발멀리나아갔다고할수있습니다.그래도이책에서새로운내용을더찾을수있을것이고꼭그럴거예요.

이책으로클린코드가르치기
기업에서신입사원에게프로그래밍을가르치는선임개발자라면이책에서다룰모범사례를익히알고있겠죠.물론업무에따라동의하지못하는사례도있을것입니다.그래도이책을통해더편하게주니어개발자를훈련시킬수있습니다.참조용으로활용하면됩니다.수습사원이작성한코드에서문제를발견하면이책에서해당하는절을알려주세요.수습사원은당신이언뜻내비친문제에대해간단한예제와함께문제해법에도달하는방법을읽을수있습니다.일일이설명을쓰지않아도되니시간을아낄수있습니다.
2~3학년까지자바를배운학생대상으로교수법개념을개발해온우리의경험이학계에서가르치는데유용할것입니다.이책은대학학부생을대상으로15년이상코드품질을고급과정으로가르쳐온지식의산물입니다.자바를밑바닥부터가르치지는못하더라도기본적으로프로그래밍과제를포함하는어떤과목과도어울립니다.특히이책은클린코드교육워크숍논문에서설명했듯이학생코드를평가할때참고하기좋습니다.

[옮긴이의말]
언어의기초를모두익혔더라도전문가로가는길은험난합니다.모든언어가그렇듯자바를처음접하면일단타입과연산자,조건문,반복문등언어의기본재료를배웁니다.이정도의지식을갖춘학생들에게간단한알고리즘구현을시켜보면조금씩다른결과물을냅니다.매우미미한차이죠.하지만시간이흐르면서어떤코드를접하고어떤과정을따랐는가에따라차이가점점벌어집니다.
코딩을잘하려면어떡해야할까요?코딩기술은경험으로쌓입니다.즉실수를저지르고고쳐가면서향상됩니다.다만코딩의세계는생각보다넓어혼자힘으로는역부족이고다른이의경험을밑바탕삼아야즉모범사례를많이보아야큰효과를거둘수있습니다.프로그래밍초보자는훌륭한코드를구분해내는시야를아직갖지못한상태입니다.이책을통해다른이의경험을빌려와야하는이유입니다.
이책에서는직접가르쳐본선생님의입장에서학생들이자주범하는여러실수를카테고리별로분류한후실수를명확히정의하고해법을제시합니다.전후코드조각을제공해무엇이잘못되었고어떻게바꾸었는지자세히설명합니다.각장의소제목만보아도‘~하기’,‘~하지않기’,‘~피하기’,‘~사용하기’등한눈에보아도선배가조언해주는느낌이들죠.실전에바로사용함으로써
코드품질을높여줄만한모범사례로가득합니다.
코딩기술은체득해야하는다양한요구사항을말합니다.체득이란몸소겪어야만의미를깊이이해하고스스로해볼수있다는뜻입니다.그런면에서개념을설명하고예시를드는전형적인방식에서벗어나하나의주제별로훌륭한코드와형편없는코드를비교해가며조언하는저자의방식은매우효과적입니다.게다가서로독립적이어서꼭차례대로읽지않아도되고요.
내가잘하고있는걸까,내가작성한코드는과연품질이좋은걸까문득의심이될때마다이책을친구처럼옆에두고읽어보세요.관련된장을펼쳐하나씩점검해보세요.주석이나명명에서기본적인관례를잘따르고있는지,흔히저지르는실수는없는지,더최적화할방법은없는지,테스트는잘이루어지고있는지,객체디자인은적절했는지등을말이죠.이런과정이쌓이고쌓여일관되고훌륭한코드작성으로이어집니다.
_심지현