이 상품은 구매 후 지원 기기에서 예스24 eBook앱 설치 후 바로 이용 가능한 상품입니다.
|
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) 수 줄이기- 사용자 정의 플러그인으로 정적 분석 도구 확장하기
|