이미 소장하고 있다면 판매해 보세요.
|
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의 구조적 검색 및 교체 기능 |
Tagir Valeev
정병열의 다른 상품
|
단순한 실수가 큰 버그로 이어진다!
실무에서 바로 적용하는 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에서 정적 분석 도구를 직접 개발한 전문가로 관련 이슈들을 누구보다 잘 파악하고 있습니다. 또한 자바 챔피언인 저자의 예제 설명은 자바 버전별로 발생할 수 있는 이슈를 설명해주는 점이 독자들의 이해를 크게 도와줍니다. - 황시연 (엘로스 백엔드 개발자)
|