자바/스프링 개발자를 위한 실용주의 프로그래밍 pdf 다운로드를 무료로 제공합니다 소프트웨어 개발을 잘하고 싶다면 ‘개발’ 공부를 해야 합니다! 자바 개발자가 코틀린 같은 신생 언어를 다룰 수 있게 된다고 해서 개발을 더 잘하게 되는 것은 아닙니다.
관련 책 pdf 모음
책 소개
소프트웨어 개발 능력을 키우고 싶다면 ‘개발’ 그 자체를 공부하고 기초적인 설계 원리를 이해할 수 있어야 합니다. 이 책은 객체지향, SOLID, 디자인 패턴, 테스트 같은 주요 개발 관련 이론이 실제 프로젝트에 어떻게 적용될 수 있는지 설명합니다. 저자는 컴퓨터 공학을 전공하고 카카오에서 백엔드 엔지니어로 근무하고 있다. 현재는 에러 및 로그를 수집하는 옵저버빌리티 플랫폼을 만드는 일에 집중하고 있다. 취미가 개발이라고 당당하게 말할 수 있을 만큼 소프트웨어 개발을 사랑하며 퇴근 후에는 그림을 그리거나 개인 프로젝트를 진행한다. 2020년에는 공개 SW 개발자 대회에서 정보통신산업진흥원장상을 수상했다.
자바/스프링 개발자 실용주의 pdf
[1부] 객체지향
▣ 들어가며
개발을 배워야 한다
__기술 vs. 개발
__개발 능력을 길러야 하는 이유
__스프링과 JPA는 기술이다
이 책을 출간하게 된 이유
▣ 01장: 절차지향과 비교하기
1.1 책임과 역할
1.2 TDA 원칙
▣ 02장: 객체의 종류
2.1 VO(Value Object: 값 객체)
__2.1.1 불변성
__2.1.2 동등성
__2.1.3 자가 검증
2.2 DTO(Data Transfer Object: 데이터 전송 객체)
2.3 DAO(Data Access Object: 데이터 접근 객체)
2.4 엔티티(Entity: 개체)
__2.4.1 도메인 엔티티
__2.4.2 DB 엔티티
__2.4.3 JPA 엔티티
__2.4.4 해석
2.5 객체의 다양한 종류
▣ 03장: 행동
3.1 덕 타이핑
3.2 행동과 구현
3.3 인터페이스
3.4 행동과 역할
3.5 메서드
▣ 04장: SOLID
4.1 SOLID 소개
__4.1.1 단일 책임 원칙
__4.1.2 개방 폐쇄 원칙
__4.1.3 리스코프 치환 원칙
__4.1.4 인터페이스 분리 원칙
__4.1.5 의존성 역전 원칙
4.2 의존성
__4.2.1 의존성 주입
__4.2.2 의존성 역전
__4.2.3 의존성 역전과 스프링
__4.2.4 의존성이 강조되는 이유
4.3 SOLID와 객체지향
4.4 디자인 패턴
▣ 05장: 순환 참조
5.1 순환 참조의 문제점
__5.1.1 무한 루프
__5.1.2 시스템 복잡도
5.2 순환 참조를 해결하는 방법
__5.2.1 불필요한 참조 제거
__5.2.2 간접 참조 활용
__5.2.3 공통 컴포넌트 분리
__5.2.4 이벤트 기반 시스템 사용
5.3 양방향 매핑
5.4 상위 수준의 순환 참조
[2부] 스프링과 객체지향 설계
▣ 06장: 안티패턴
6.1 스마트 UI
6.2 양방향 레이어드 아키텍처
__6.2.1 레이어별 모델 구성
__6.2.2 공통 모듈 구성
6.3 완화된 레이어드 아키텍처
6.4 트랜잭션 스크립트
▣ 07장: 서비스
7.1 Manager
7.2 서비스보다 도메인 모델
7.3 작은 기계
7.4 조언
▣ 08장: 레이어드 아키텍처
8.1 레이어드 아키텍처의 최소 조건
8.2 잘못된 레이어드 아키텍처
__8.2.1 JPA 엔티티 우선 접근
__8.2.2 API 엔드포인트 우선 접근
__8.2.3 본질을 다시 생각하기
8.3 진화하는 아키텍처
__8.3.1 인지 모델 변경하기
__8.3.2 JPA와의 결합 끊기
__8.3.3 웹 프레임워크와의 결합 끊기
8.4 새로운 접근법
8.5 빈약한 도메인
▣ 09장: 모듈
9.1 모듈성
__9.1.1 독립성
__9.1.2 은닉성
9.2 패키지 구조
__9.2.1 계층 기반 구조
__9.2.2 도메인 기반 구조
__9.2.3 정리
9.3 패키지와 모듈
▣ 10장: 도메인
10.1 소프트웨어 개발의 시작
10.2 애플리케이션의 본질
10.3 도메인 모델과 영속성 객체
__10.3.1 통합하기 전략
__10.3.2 구분하기 전략
__10.3.3 평가
▣ 11장: 알아두면 유용한 스프링 활용법
11.1 타입 기반 주입
11.2 자가 호출
[03부] 테스트
▣ 12장: 자동 테스트
12.1 Regression
12.2 의도
12.3 레거시 코드
▣ 13장: 테스트 피라미드
13.1 구글의 테스트 피라미드
13.2 테스트 분류 기준
13.3 소형 테스트의 중요성
▣ 14장: 테스트 대역
14.1 Dummy
14.2 Stub
14.3 Fake
14.4 Mock
__14.4.1 상태 기반 검증
__14.4.2 행위 기반 검증
__14.4.3 상태 기반 vs. 행위 기반
14.5 Spy
14.6 정리
▣ 15장: 테스트 가능성
15.1 테스트를 어렵게 만드는 요소
__15.1.1 숨겨진 입력
__15.1.2 숨겨진 출력
15.2 테스트가 보내는 신호
▣ 16장: 테스트와 설계
16.1 테스트와 SRP
16.2 테스트와 ISP
16.3 테스트와 OCP, DIP
16.4 테스트와 LSP
▣ 17장: 테스트와 개발 방법론
17.1 TDD
17.2 BDD
[부록]
A: 포트-어댑터 패턴
B: 클린 아키텍처
C: 소프트웨어 엔지니어
D: 실용주의
E: 참고 자료