자바 코드의 품질을 높이는 100가지 방법

자바 코드의 품질을 높이는 100가지 방법

$33.99
Description
자바 코드 작성의 함정, 정적 분석 도구로 해결하라
이 책은 자바 개발에서 반복적으로 발생하는 100가지 실수를 모아 더 나은 코드를 작성할 수 있도록 돕는 실전 가이드다. 단순한 코드 리뷰를 넘어, 실제 사례와 코드 예제를 통해 표현식, 프로그램 구조, 숫자 처리, 예외 처리, 유닛 테스트 등에서 발생할 수 있는 다양한 문제의 원인과 해결책을 깊이 있게 탐구한다. 각 장은 독립적으로 구성되어 있어 관심 있는 주제별로 자유롭게 학습할 수 있으며, 초보자부터 숙련자까지 모든 수준의 자바 개발자에게 유용하다.
이 책을 통해 자주 발생하는 오류를 피하고 더 견고하고 높은 품질의 코드를 작성하며 성장할 수 있을 것이다. 이 책이 여러분의 개발 여정에 든든한 길잡이가 되길 바란다.
저자

타기르발레예프

저자:타기르발레예프
뮌헨지사에있는젯브레인의테크니컬리더이며IntelliJIDEA의자바언어지원팀에소속되어있다.그의주요관심사는정적분석과코드리팩터링이다.IntelliJIDEA에내장된정적코드분석기를설계하고개발했으며자바바이트코드정적분석도구인FindBugs에도기여한바있다.15년간자바로상업용소프트웨어를개발해왔고정적분석분야에서만10년이상의경험을보유하고있다.또한2006년에컴퓨터과학박사학위를취득했으며,2020년에자바챔피언칭호를획득했다.

역자:정병열
어린시절BASIC언어를계기로프로그래밍을접했다.연세대학교공과대학을졸업한이후서버엔지니어와개발자로일하며다양한업무를담당했다.현재는시니어개발자로경력을이어가는한편양질의개발서적출간에일조하고자노력하는중이다.옮긴책으로는『자바개발자를위한데브옵스툴』,『자바마이크로서비스를활용한SRE』,『진화적아키텍처』(이상한빛미디어)등이있다.

목차

CHAPTER1코드품질관리
코드리뷰와페어프로그래밍
코드스타일
정적분석
자동화된테스트
뮤테이션커버리지
동적분석
코드어설션
정리
CHAPTER2표현식
실수001숫자연산자우선순위오해
실수002조건식의괄호누락
실수003덧셈이아닌결합으로작동
실수004멀티라인문자열리터럴
실수005단항덧셈연산자
실수006조건표현식의묵시적타입변환
실수007비단락논리연산자사용
실수008&&와||혼동
실수009잘못된가변인수호출
실수010조건연산자와가변인수호출
실수011반환값무시
실수012새롭게생성된객체를사용하지않음
실수013잘못된메서드를참조하는바인딩
실수014메서드참조시잘못된메서드지정
정리

CHAPTER3프로그램구조
실수015잘못된if-else연쇄
실수016이전조건의다음조건지배
실수017switch문통과실수
실수018구형for루프오류
실수019루프변수미사용
실수020잘못된루프방향
실수021루프오버플로
실수022멱등루프본문
실수023잘못된초기화순서
실수024누락된슈퍼클래스메서드호출
실수025우발적인정적필드선언
정리

CHAPTER4숫자
실수026우발적인8진수리터럴사용
실수027수치오버플로
실수028정수나눗셈중반올림
실수029Integer.MIN_VALUE의절댓값
실수030홀수검사와음수
실수031확장으로인한정밀도손실
실수032무조건적인축소변환
실수03316진수음수
실수034복합할당의묵시적타입변환
실수035나눗셈과복합할당
실수036short타입
실수037비트조작알고리즘
실수038음수바이트
실수039잘못된클램핑순서
실수040특수한부동소수점수
정리

CHAPTER5일반적인예외
실수041NullPointerException
실수042IndexOutOfBoundsException
실수043ClassCastException
실수044StackOverflowError
정리

CHAPTER6문자열
실수045char값을문자로간주
실수046대소문자변환
실수047기본로케일에서String.format사용
실수048포맷인수불일치
실수049정규표현식대신일반문자열사용
실수050replaceAll오용
실수051이스케이프시퀀스오용
실수052문자열의대소문자비교
실수053indexOf메서드결과미확인실수054indexOf인수오용
정리

CHAPTER7객체비교
실수055equals메서드대신참조동등성비교
실수056equals()가내용을비교한다고간주함
실수057URL.equals()사용
실수058스케일이다른BigDecimal비교
실수059관련없는타입에equals()사용
실수060잘못된equals()구현
실수061배열필드hashCode()
실수062equals()와hashCode()불일치
실수063특정반환값에의존하는compare()
실수064동일한객체를비교할때0을반환하지않음
실수065뺄셈을이용한숫자비교
실수066비교메서드가반환하는NaN값무시
실수067비교메서드에서객체를키시퀀스로표현하지못함
실수068비교자의난수반환
정리

CHAPTER8컬렉션과맵
실수069관련없는객체타입검색
실수070단일객체와컬렉션혼합
실수071null을허용하지않는컬렉션에서null을검색함
실수072맵에서null값사용
실수073수정불가컬렉션의수정시도
실수074가변객체를키로사용
실수075HashMap및HashSet의등장순서의존
실수076순회도중수정하기
실수077List.remove()오버로드오용
실수078List.remove()직후원소생략
실수079Collection.removeIf()내부의컬렉션조회
실수080Map.computeIfAbsent()의동시수정
실수081이터레이터계약위반
정리

CHAPTER9라이브러리메서드
실수082StringBuilder생성자에char전달
실수083스트림API체인에서부수효과를일으킴
실수084스트림을두번소비
실수085null사용불가스트림에서null값사용
실수086스트림API연산계약위반
실수087instanceof대신getClass()를사용
실수088열거형,어노테이션,클래스에서getClass()를사용
실수089문자열을불리언으로잘못변환
실수090잘못된날짜포맷
실수091약한참조,부드러운참조의우발적무효화
실수092세상이안정적이라는가정
실수093동시업데이트데이터구조에대한비원자적접근
정리

CHAPTER10유닛테스트
실수094assert문의부수효과
실수095잘못된assertion메서드호출
실수096잘못된예외테스트
실수097테스트메서드조기종료
실수098유닛테스트에서AssertionError무시하기
실수099assertNotEquals()로동등성비교하기
실수100양식이잘못된테스트메서드
정리

APPENDIXA정적분석어노테이션
어노테이션패키지
어노테이션종류

APPENDIXB정적분석툴확장
ErrorProne플러그인
SpotBugs플러그인
IntelliJIDEA플러그인
IntelliJIDEA의구조적검색및교체기능

출판사 서평

자바코드작성의함정,정적분석도구로해결하라
이책은자바개발에서반복적으로발생하는100가지실수를모아더나은코드를작성할수있도록돕는실전가이드다.단순한코드리뷰를넘어,실제사례와코드예제를통해표현식,프로그램구조,숫자처리,예외처리,유닛테스트등에서발생할수있는다양한문제의원인과해결책을깊이있게탐구한다.각장은독립적으로구성되어있어관심있는주제별로자유롭게학습할수있으며,초보자부터숙련자까지모든수준의자바개발자에게유용하다.
이책을통해자주발생하는오류를피하고더견고하고높은품질의코드를작성하며성장할수있을것이다.이책이여러분의개발여정에든든한길잡이가되길바란다.

단순한실수가큰버그로이어진다!
실무에서바로적용하는100가지자바기술
대부분의개발자는작은실수하나가예상치못한버그로이어지는경험을종종한다.특히객체를비교할때equals()와hashCode()를올바르게구현하지않아발생하는문제는흔히간과되지만,실제로는심각한오류를초래한다.또한StreamAPI를활용한코드가우아해보이지만,내부동작을깊이이해하지않으면성능저하나유지보수의어려움을겪게된다.
이책은실무에서마주할수있는다양한문제를깊이있게탐구하며,단순한개념설명이아니라실전에서발생하는버그와그해결방법을중심으로구성되었다.예를들어,많은개발자가NullPointerException을피하기위해습관적으로null체크를하지만,보다안전하고효과적인방법이존재한다.또한멀티스레드환경에서동시성문제를간과하면의도하지않은동작이발생할수있으며,이러한문제를방지하기위한실질적인패턴과기법도함께다룬다.이책을통해단순히실수를줄이는것을넘어,보다안전하고견고한코드를작성하는법을배울수있다.실무에서발생할수있는문제를미리예측하고대응하는능력을키워자바개발자로서한단계더나아가길바란다.

누구를위한책인가요?
-초급부터고급까지자바개발경험이있는모든프로그래머

이책에서다루는주요내용은무엇인가요?
-견고하고안전한자바코드작성법
-실무에서흔히발생하는실수를예측하고줄이는법
-디버깅과테스트시간을절약하는방법
-정적분석도구활용과오탐(falsereports)수줄이기
-사용자정의플러그인으로정적분석도구확장하기