이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
자바 코드의 품질을 높이는 100가지 방법
자바 베테랑이 전하는 실전 오류 패턴과 해법
베스트
프로그래밍 언어 top100 7주
가격
32,000
10 28,800
YES포인트?
1,600원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요
배송안내
서울특별시 영등포구 은행로 11(여의도동, 일신빌딩) 변경
배송비?
무료

이미 소장하고 있다면 판매해 보세요.

  •  국내배송만 가능
  •  문화비소득공제 가능

이 분야의 이벤트

상세 이미지

책소개

목차

CHAPTER 1 코드 품질 관리

코드 리뷰와 페어 프로그래밍
코드 스타일
정적 분석
자동화된 테스트
뮤테이션 커버리지
동적 분석
코드 어설션
정리
CHAPTER 2 표현식

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

CHAPTER 3 프로그램 구조

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

CHAPTER 4 숫자

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

CHAPTER 5 일반적인 예외

실수 041 NullPointerException
실수 042 IndexOutOfBoundsException
실수 043 ClassCastException
실수 044 StackOverflowError
정리

CHAPTER 6 문자열

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

CHAPTER 7 객체 비교

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

CHAPTER 8 컬렉션과 맵

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

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

CHAPTER 10 유닛 테스트

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

APPENDIX A 정적 분석 어노테이션

어노테이션 패키지
어노테이션 종류

APPENDIX B 정적 분석 툴 확장

Error Prone 플러그인
SpotBugs 플러그인
IntelliJ IDEA 플러그인
IntelliJ IDEA의 구조적 검색 및 교체 기능

저자 소개 2

타기르 발레예프

관심작가 알림신청
 

Tagir Valeev

뮌헨 지사에 있는 젯브레인의 테크니컬 리더이며 IntelliJ IDEA의 자바 언어 지원 팀에 소속되어 있다. 그의 주요 관심사는 정적 분석과 코드 리팩터링이다. IntelliJ IDEA에 내장된 정적 코드 분석기를 설계하고 개발했으며 자바 바이트코드 정적 분석 도구인 FindBugs에도 기여한 바 있다. 15년간 자바로 상업용 소프트웨어를 개발해왔고 정적 분석 분야에서만 10년 이상의 경험을 보유하고 있다. 또한 2006년에 컴퓨터 과학 박사 학위를 취득했으며, 2020년에 자바 챔피언 칭호를 획득했다.
어린 시절 BASIC 언어를 계기로 프로그래밍을 접했다. 연세대학교 공과대학을 졸업한 이후 서버 엔지니어와 개발자로 일하며 다양한 업무를 담당했다. 현재는 시니어 개발자로 경력을 이어가는 한편 양질의 개발 서적 출간에 일조하고자 노력하는 중이다. 옮긴 책으로는 『자바 개발자를 위한 데브옵스 툴』, 『자바 마이크로서비스를 활용한 SRE』, 『진화적 아키텍처』 (이상 한빛미디어) 등이 있다.

정병열의 다른 상품

품목정보

발행일
2025년 03월 04일
쪽수, 무게, 크기
424쪽 | 183*235*30mm
ISBN13
9791169213486

출판사 리뷰

단순한 실수가 큰 버그로 이어진다!
실무에서 바로 적용하는 100가지 자바 기술


대부분의 개발자는 작은 실수 하나가 예상치 못한 버그로 이어지는 경험을 종종 한다. 특히 객체를 비교할 때 equals()와 hashCode()를 올바르게 구현하지 않아 발생하는 문제는 흔히 간과되지만, 실제로는 심각한 오류를 초래한다. 또한 Stream API를 활용한 코드가 우아해 보이지만, 내부 동작을 깊이 이해하지 않으면 성능 저하나 유지보수의 어려움을 겪게 된다.

이 책은 실무에서 마주할 수 있는 다양한 문제를 깊이 있게 탐구하며, 단순한 개념 설명이 아니라 실전에서 발생하는 버그와 그 해결 방법을 중심으로 구성되었다. 예를 들어, 많은 개발자가 NullPointerException을 피하기 위해 습관적으로 null 체크를 하지만, 보다 안전하고 효과적인 방법이 존재한다. 또한 멀티스레드 환경에서 동시성 문제를 간과하면 의도하지 않은 동작이 발생할 수 있으며, 이러한 문제를 방지하기 위한 실질적인 패턴과 기법도 함께 다룬다. 이 책을 통해 단순히 실수를 줄이는 것을 넘어, 보다 안전하고 견고한 코드를 작성하는 법을 배울 수 있다. 실무에서 발생할 수 있는 문제를 미리 예측하고 대응하는 능력을 키워 자바 개발자로서 한 단계 더 나아가길 바란다.

누구를 위한 책인가요?

- 초급부터 고급까지 자바 개발 경험이 있는 모든 프로그래머

이 책에서 다루는 주요 내용은 무엇인가요?

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

추천평

자바 언어를 공부한 후 이제 어느 정도 활용할 준비가 되신 분들에게 참 좋은 책이 나왔습니다. 이 책의 초반부를 읽으며 과거와 미래가 동시에 떠올랐습니다. 25년 전 처음 자바를 접했을 때의 낯설고 생소했던 그 시절, 15년 전 자바 강사로서 수강생들을 만났을 때의 느낌, 그리고 이제 대학에 진학하여 저와 같은 길을 가려고 하는 큰아이의 미래까지. 조금 거창해 보일 수 있겠지만, 이 책을 통해 아이와 자바에 대해 토론할 생각을 하니 벌써부터 행복해집니다. - 계기훈 (삼성SDS 물류시스템 BA)
이 책은 자바의 고유한 특성으로 인해 발생할 수 있는 실수와, 개발자로서 반드시 유념해야 할 원칙들을 체계적으로 정리해줍니다. 제가 시행착오를 거치며 직접 터득한 실수 예방법들이 이 책에서는 정답처럼 제시되어 있어 무척 놀라웠습니다. 특히, IntelliJ IDEA의 자바 팀에서 활동하는 저자가 직접 소개하는 정적 분석 활용 팁들은 실무에서 오류를 예방하는 데 큰 도움이 됩니다. 자바 입문자부터 숙련된 개발자까지 모두에게 이 책을 추천합니다. - 김우경 (CJ올리브영 Back-end Engineer)
이 책은 프로그래머에게 주어지는 빨간약, 파란약입니다. 이 책을 읽고 나면 내가 만드는 자바 프로그램이 얼마나 많은 잠재적 버그에 노출되어 있는지를 깨닫게 될 것입니다. - 마동석 (Royal Bank Of Canada(RBC) Tech Lead)
이 책에서 다루는 여러 사례와 내용들을 이해한다면 코드의 품질뿐 아니라 커뮤니케이션의 효율도 몇 배 올라갈 것입니다. 이 책은 소프트웨어 개발에 관련된 모든 사람이 읽어야 할 필요가 있습니다. - 박정호 (테크레디 대표)
개발자로 일을 하다 보면 MSA, DDD 등 여러 가지 콘셉트를 익히고 적용해야 하지만 결국 우리는 프로그래밍 언어를 사용해야 하죠. AI가 코드를 작성해주는 시대에 이와 같이 프로그래밍 언어 본질적인 부분을 다루는 책, 특히 제가 다루고 있는 자바라는 언어를 다루는 책이 나와 기쁩니다. 재밌게 읽었고 자바를 사용하시는 모든 분께 추천합니다. - 서영원 (컬리 소프트웨어 엔지니어)
저는 여러 회사의 자바 프로젝트를 진행하면서 정적 분석을 자주 도입했습니다. 그 과정에서 한 가지 중요한 문제점을 발견했습니다. 개발자들이 정적 분석으로 발견된 문제를 제대로 이해하지 못한 채, 단순히 에러 메시지를 없애는 데만 집중하여 오히려 버그가 더 커져버리는 것이었습니다. 이 책도 그와 같은 문제점에 동감하며, 어째서 어떤 항목이 문제가 되는 것인지 상세하게 알려주고 있습니다.

또한 많은 문제점이 코드의 명확성보다는 기교를 부리려다가 발생하곤 합니다. 이 책에서도 불필요한 기교를 부리면서 발생하는 다양한 문제점을 제시합니다. 기교보다는 명확성에 초점을 맞추어야 한다는 점을 잘 보여줍니다. 이 책의 대부분 내용은 모른 채 저지르면 버그나 장애로 이어지는 실수와 그동안 제가 수많은 프로젝트에서 봐왔던 실제 실수들이 다수 포함돼 있습니다. 자바 혹은 JVM 기반 언어 개발자들의 필독서라 할 만합니다. - 손권남 (네이버 리더)
자바를 다 알고 있다는 자신감에 다른 기술을 습득해왔는데, 이 책을 읽으며 기본적인 내용조차 두루 알지 못했다는 사실을 깨달았습니다. 기본적인 실수를 폭넓게 짚어 주어 자바를 더 깊이 이해할 수 있었고, 기본적인 요소에도 더욱 신경 쓰게 되었습니다. - 윤수혁 (코나아이 웹 개발자)
이 책은 자바 코드 작성 시 발생할 수 있는 다양한 실수 사례를 소개하며 그 이유를 파악하는 과정을 소개합니다. 도서를 읽어보며 현재 진행 중인 프로젝트에서 의심되는 부분을 점검해보게 되었고 ‘이 부분은 의도치 않았는데 예방하고 있었네!’ 혹은 ‘이 실수는 우리도 한 번 검증해봐야 할까?’와 같은 생각이 들게 합니다. 자바를 처음 배우는 개발자에게는 학습 난이도가 다소 있어 곁에 두고 여러 번 읽어보기를 권장드리고, 팀원들과 함께 스터디하기에도 적합한 책이라고 생각합니다. 이 책을 통해 코드 품질을 한층 더 높여보길 바랍니다! - 이승환 (당근마켓 서버 개발자)
개발을 하다 보면 예상치 못한 문제에 부딪힐 때가 많습니다. 전체적인 흐름은 문제없어 보이지만, 원하는 결과가 나오지 않을 때. 하루 종일 디버깅에 매달렸지만, 결국 원인은 사소한 실수였을 때. 이런 순간들은 누구에게나 익숙한 경험일 것입니다. 이 책은 바로 이런 순간들을 줄이는 데 집중한 책입니다. 시간을 아끼고, 더 나은 개발자가 되고 싶다면 꼭 읽어볼 가치가 있는 책입니다. - 이시훈 (CJ올리브영 Back-end Engineer)
사람은 누구나 실수를 하지만 개발자의 실수는 때론 큰 장애로 이어지고, 이는 고객의 신뢰나 매출에 큰 타격이 되기도 합니다. 늘 바쁜 우리는 어떻게 실수를 예방할 수 있을까요? 바쁜 일상에서도 부담 없이, 하루에 한 개씩 2~4페이지 분량으로 정리된 실수와 방지 가이드를 읽어보는 것은 어떨까요? 100일 후 당신은 아마도 본인의 실수뿐만 아니라 코드 리뷰에서 동료들의 실수도 발견하고 조언해줄 수 있는 듬직한 리뷰어가 될 수 있을 거예요! - 전성종 (CJ올리브영 Back-end Engineer)
이 책은 자바 개발자들이 흔히 저지를 수 있는 다양한 실수를 다룹니다. 실수를 통해 배우는 것은 매우 효과적인 학습 방법 중 하나입니다. 현업에서 자바를 활발하게 사용하고 있지만, 이 책을 통해 몰랐던 부분도 많이 발견할 수 있었습니다. 이 책을 통해 여러분의 코드가 더욱 견고하고 오류 없이 작성될 수 있기를 바랍니다. - 홍수영 (LINE+ 소프트웨어 엔지니어)
개발 시 IDE나 SonarQube 등의 정적 분석 도구를 통해 냄새나는 코드를 사전에 찾아 개선합니다. 하지만 많은 개발자는 도구가 알려주는 내용을 온전히 이해하고 사용하기보다는, 경고 표시가 뜰 때나 코드 커버리지를 높이기 위해 시간에 쫓겨 수정하곤 합니다. 이러한 문제점을 보완해줄 책이 마침내 출간되었습니다. 이 책의 저자는 JetBrains에서 정적 분석 도구를 직접 개발한 전문가로 관련 이슈들을 누구보다 잘 파악하고 있습니다. 또한 자바 챔피언인 저자의 예제 설명은 자바 버전별로 발생할 수 있는 이슈를 설명해주는 점이 독자들의 이해를 크게 도와줍니다. - 황시연 (엘로스 백엔드 개발자)

리뷰/한줄평11

리뷰

9.8 리뷰 총점

한줄평

10.0 한줄평 총점

클린봇이 부적절한 글을 감지 중입니다.

설정
28,800
1 28,800