000 | 00000cam c2200205 c 4500 | |
001 | 000046048914 | |
005 | 20201015114103 | |
007 | ta | |
008 | 200923s2020 ulk b 001c kor | |
020 | ▼a 9791165212315 ▼g 93000 | |
035 | ▼a (KERIS)BIB000015652059 | |
040 | ▼a 211015 ▼c 211009 ▼d 211009 | |
041 | 1 | ▼a kor ▼h eng |
082 | 0 4 | ▼a 005.133 ▼2 23 |
085 | ▼a 005.133 ▼2 DDCK | |
090 | ▼a 005.133 ▼b J41 2020z3 | |
100 | 1 | ▼a Harrer, Simon |
245 | 1 0 | ▼a 자바 코딩의 기술 : ▼b 똑똑하게 코딩하는 법 / ▼d 사이먼 하러, ▼e 요르그 레너드, ▼e 리누스 디에츠 지음 ; ▼e 심지현 옮김 |
246 | 1 9 | ▼a Java by comparison : ▼b become a Java craftsman in 70 examples |
260 | ▼a 서울 : ▼b 길벗, ▼c 2020 | |
300 | ▼a 264 p. ; ▼c 23 cm | |
504 | ▼a 참고문헌(p. 255-256)과 색인수록 | |
546 | ▼a 영어로 된 원저작을 한국어로 번역 | |
700 | 1 | ▼a Lenhard, Jèorg, ▼e 저 |
700 | 1 | ▼a Dietz, Linus, ▼e 저 |
700 | 1 | ▼a 심지현, ▼e 역 |
900 | 1 0 | ▼a 하러, 사이먼, ▼e 저 |
900 | 1 0 | ▼a 레너드, 요르그, ▼e 저 |
900 | 1 0 | ▼a 디에츠, 리누스, ▼e 저 |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Sejong Academic Information Center/Science & Technology/ | Call Number 005.133 J41 2020z3 | Accession No. 151351188 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
코딩 스킬을 개선하는 가장 좋은 방법은 전문가의 코드를 읽는 것이다. 오픈 소스 코드를 읽으면서 이해하면 좋지만, 너무 방대하고 스스로 맥락을 찾는 게 어려울 수 있다. 그럴 땐 이 책처럼 현장에서 자주 발견되는 문제 유형 70가지와 해법을 비교하면서 자신의 코드에서 개선할 점을 찾는 것이 좋다.
너무 과하지 않으면서 간결하게, 군더더기 없이, 딱 필요한 만큼만 있는 코드를 작성하는 방법을 배워보자. BufferedReader를 br로 선언하는가? buffered로 선언하는가? 왜 reader로 선언해야 한다고 해법을 제시할까? 이 책은 변수명을 어떻게 짓는가, 주석은 어떻게 써야 하는가부터 시작해서 단계별로 주제를 심화해가면서 적절한 코드란 무엇인지 알려준다.
내 코드, 정말 괜찮을까?
전문가의 코드와 비교하면서 배운다
코딩 스킬을 개선하는 가장 좋은 방법은 전문가의 코드를 읽는 것이다. 오픈 소스 코드를 읽으면서 이해하면 좋지만, 너무 방대하고 스스로 맥락을 찾는 게 어려울 수 있다. 그럴 땐 이 책처럼 현장에서 자주 발견되는 문제 유형 70가지와 해법을 비교하면서 자신의 코드에서 개선할 점을 찾는 것이 좋다.
적절한 코드를 작성하는 법을 배운다
너무 과하지 않으면서 간결하게, 군더더기 없이, 딱 필요한 만큼만 있는 코드를 작성하는 방법을 배워보자. BufferedReader를 br로 선언하는가? buffered로 선언하는가? 왜 reader로 선언해야 한다고 해법을 제시할까? 이 책은 변수명을 어떻게 짓는가, 주석은 어떻게 써야 하는가부터 시작해서 단계별로 주제를 심화해가면서 적절한 코드란 무엇인지 알려준다.
훌륭한 코드란 기능을 구현하는 것 이상이다
별거 아닌 것 같은 디테일 하나가 코드를 더 멋지게 만든다. 가독성이 좋아지고, 유지보수성이 좋아지고, 변경에 유연하고, 강건한 코드, 더 빠른 코드를 작성할 수 있게 해준다. 작지만 중요한 디테일을 꼼꼼하게 지적하고, 더 나은 프로그래머가 되는 여정을 보여줄 것이다.
[책 속의 문구]
명심하세요! 바보는 도구를 사용해도 바보입니다!
[예제 코드]
o 길벗 깃허브 저장소: https://github.com/gilbutITbook/007025
o 원서 소스 코드: https://pragprog.com/titles/javacomp/source_code
[관련도서]
유지보수 가능한 코딩의 기술 자바편
자바로 배우는 리팩토링 입문
대상 독자
자바 프로그래밍 초보자나 중급자가 대상입니다. 또한 프로그래머 과정을 이제 막 시작한 개발자를 가르치는 선생님에게 유용한 수업 자료입니다. 이 책은 자원 처리나 함수형 프로그래밍, 테스트에 대해 더 최신인 자바 8 문법에 기반해 팁과 비결을 제공합니다.
이 책은 자바 기본 문법을 학습하고 조건문과 루프로 간단한 프로그램을 만들 수 있고 객체 지향 프로그래밍의 기초를 알고 난 후에 읽어야 합니다. FizzBuzz(준비되었나요? 자기 평가를 해보세요 참고, 015쪽) 같은 간단한 문제를 컴파일하고 실행하고 해결하는 코드 정도는 작성할 수 있어야 합니다. 간단한 알고리즘을 구현할 수 있어야 하고 리스트나 큐, 스택, 맵 같은 기본적인 자료
구조를 사용하는 방법도 알아야 합니다. 또한 이 모든 것이 당연히 즐거워야 하고요!
복잡한 문제를 풀었을 때 큰 만족감을 느낀다면 시작이 매우 좋은 겁니다. 하지만 배울 내용이 산더미라는 사실도 물론 알고 있겠죠. 기술을 적용해보았는데 자바 프로그래밍이나 일반적인 프로그래밍 경험이 부족하다는 사실을 인정해야 한다면 이 책을 통해 최대효과를 거둘 수 있을 것입니다. 아마도 클린 코드와 숙련된 개발자가 적용하는 모범 사례에 대한 감을 아직 키우지 못했다는 뜻일 테니까요.
이제 바뀔 때가 되었습니다!
물론 [이펙티브 자바](인사이트, 2018)와 [클린 코드](인사이트, 2013)처럼 자바의 코드 품질과 가독성, 유지보수성, 클린 코드를 다룬 고급 책을 이미 접했다면 이미 한 발 멀리 나아갔다고 할 수 있습니다. 그래도 이 책에서 새로운 내용을 더 찾을 수 있을 것이고 꼭 그럴 거예요.
이 책으로 클린 코드 가르치기
기업에서 신입사원에게 프로그래밍을 가르치는 선임 개발자라면 이 책에서 다룰 모범 사례를 익히 알고 있겠죠. 물론 업무에 따라 동의하지 못하는 사례도 있을 것입니다. 그래도 이 책을 통해 더 편하게 주니어 개발자를 훈련시킬 수 있습니다. 참조용으로 활용하면 됩니다. 수습사원이 작성한 코드에서 문제를 발견하면 이 책에서 해당하는 절을 알려주세요. 수습사원은 당신이 언뜻 내비친 문제에 대해 간단한 예제와 함께 문제 해법에 도달하는 방법을 읽을 수 있습니다. 일일이 설명을 쓰지 않아도 되니 시간을 아낄 수 있습니다.
2~3학년까지 자바를 배운 학생 대상으로 교수법 개념을 개발해온 우리의 경험이 학계에서 가르치는 데 유용할 것입니다. 이 책은 대학 학부생을 대상으로 15년 이상 코드 품질을 고급 과정으로 가르쳐온 지식의 산물입니다. 자바를 밑바닥부터 가르치지는 못하더라도 기본적으로 프로그래밍 과제를 포함하는 어떤 과목과도 어울립니다. 특히 이 책은 클린 코드 교육 워크숍 논문에서 설명했듯이 학생 코드를 평가할 때 참고하기 좋습니다.
Information Provided By: :

Author Introduction
사이먼 하러(지은이)
항상 새로운 기술, 프레임워크, 아이디어를 탐색하는 개발자이자 선생님입니다. 그의 친구들은 그를 클린 코드 전도사라고 부릅니다.
요르그 레너드(지은이)
개발자, 선생님, 연구원입니다. 10년째 자바를 가르치고 있으며 오픈 소스 소프트웨어에 기여하는 것을 좋아합니다. 컴퓨터 과학 연구자로서의 경력과 전문 소프트웨어 개발자로서의 경험을 쌓고 있습니다.
리누스 디에츠(지은이)
뮌헨 공과대학교의 연구원입니다. 우아한 알고리즘을 개발하거나 오픈 소스 소프트웨어를 발전시키는 데 그의 열정을 바치고 있습니다.
심지현(옮긴이)
이화여대 컴퓨터공학과를 졸업하고, 카이스트KAIST 대학원 전산과에서 데이터베이스 전공으로 석사 학위를 취득했다. DB 외에 온톨로지, 개인화 검색 등을 연구했으며, 졸업 후 네이버에서 검색 서버 설계 및 개발 실무 경험을 쌓다가 현재는 검색 연구실에서 검색 모델링과 추천 시스템 관련 연구 중이다.

Table of Contents
1장 우선 정리부터
__1.1 쓸모없는 비교 피하기
__1.2 부정 피하기
__1.3 불 표현식을 직접 반환
__1.4 불 표현식 간소화
__1.5 조건문에서 NullPointerException 피하기
__1.6 스위치 실패 피하기
__1.7 항상 괄호 사용하기
__1.8 코드 대칭 이루기
__1.9 1장에서 배운 내용
2장 코드 스타일 레벨 업
__2.1 매직 넘버를 상수로 대체
__2.2 정수 상수 대신 열거형
__2.3 For 루프 대신 For-Each
__2.4 순회하며 컬렉션 수정하지 않기
__2.5 순회하며 계산 집약적 연산하지 않기
__2.6 새 줄로 그루핑
__2.7 이어붙이기 대신 서식화
__2.8 직접 만들지 말고 자바 API 사용하기
__2.9 2장에서 배운 내용
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.11 3장에서 배운 내용
4장 올바르게 명명하기
__4.1 자바 명명 규칙 사용하기
__4.2 프레임워크에는 Getter/Setter 규칙 적용
__4.3 한 글자로 명명하지 않기
__4.4 축약 쓰지 않기
__4.5 무의미한 용어 쓰지 않기
__4.6 도메인 용어 사용하기
__4.7 4장에서 배운 내용
5장 문제 발생에 대비하기
__5.1 빠른 실패
__5.2 항상 가장 구체적인 예외 잡기
__5.3 메시지로 원인 설명
__5.4 원인 사슬 깨지 않기
__5.5 변수로 원인 노출
__5.6 타입 변환 전에 항상 타입 검증하기
__5.7 항상 자원 닫기
__5.8 항상 다수 자원 닫기
__5.9 빈 catch 블록 설명하기
__5.10 5장에서 배운 내용
6장 올바르게 드러내기
__6.1 Given-When-Then으로 테스트 구조화
__6.2 의미 있는 어서션 사용하기
__6.3 실제 값보다 기대 값을 먼저 보이기
__6.4 합당한 허용값 사용하기
__6.5 예외 처리는 JUnit에 맡기기
__6.6 테스트 설명하기
__6.7 독립형 테스트 사용하기
__6.8 테스트 매개변수화
__6.9 경계 케이스 다루기
__6.10 6장에서 배운 내용
7장 객체 디자인
__7.1 불 매개변수로 메서드 분할
__7.2 옵션 매개변수로 메서드 분할
__7.3 구체 타입보다 추상 타입
__7.4 가변 상태보다 불변 상태 사용하기
__7.5 상태와 동작 결합하기
__7.6 참조 누수 피하기
__7.7 널 반환하지 않기
__7.8 7장에서 배운 내용
8장 데이터 흐름
__8.1 익명 클래스 대신 람다 사용하기
__8.2 명령형 방식 대신 함수형
__8.3 람다 대신 메서드 참조
__8.4 부수 효과 피하기
__8.5 복잡한 스트림 종료 시 컬렉트 사용하기
__8.6 스트림 내 예외 피하기
__8.7 널 대신 옵셔널
__8.8 선택 필드나 매개변수 피하기
__8.9 옵셔널을 스트림으로 사용하기
__8.10 8장에서 배운 내용
9장 실전 준비
__9.1 정적 코드 분석 도구
__9.2 팀 내 자바 포맷 통일
__9.3 빌드 자동화
__9.4 지속적 통합
__9.5 생산 준비와 납품
__9.6 콘솔 출력 대신 로깅
__9.7 다중 스레드 코드 최소화 및 독립
__9.8 고급 동시 실행 추상화 사용하기
__9.9 프로그램 속도 향상
__9.10 틀린 가정 알기
__9.11 9장에서 배운 내용
Information Provided By: :
