본문 바로가기
리뷰/도서

[리뷰] 실전 자바 소프트웨어 개발

by Remover 2020. 8. 22.
반응형

실전 자바 소프트웨어 개발 - 한빛미디어, 우정은 옮김

책소개

실전 프로젝트로 배우는 최신 자바 개발 기법 레벨업 가이드 

 

이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일입니다. 테스트 주도 개발 같은 객체지향 원칙을 배워야 할지, 함수형 프로그래밍을 배워야 할지 갈피를 잡기도 어렵습니다. 이 책은 실전 프로젝트를 최신 자바 기법으로 개발하는 방법을 설명해 다양한 기술을 서로 연결하고 적용하는 법을 알려줍니다.

입출금 내역 분석기, 문서 관리 시스템, 비즈니스 규칙 엔진, SNS를 직접 구현해보며 실무에 필요한 핵심 기술을 익힐 수 있습니다. 각 장을 따라 해보며 간단한 명령줄 배치 프로그램부터 점차 완성도 높은 응용프로그램을 구현해보세요. 기초 자바 사용법만 알아도 세련되고 견고하며 유지보수 가능한 자바 소프트웨어를 개발하는 최신 개발 방법을 배울 수 있습니다. 

 

자세한 소개 : https://www.hanbit.co.kr/store/books/look.php?p_code=B7859887743

 

실전 자바 소프트웨어 개발

이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일입니다. 테스트 주도 개발 같은 객체지향 원칙을 배워야 할지, 함수형 프로그래밍을 배워야 할지 갈피

www.hanbit.co.kr

목차

더보기

chapter 1 여행의 시작

1.1 테마

1.2 각 장에서 다루는 내용

1.3 되새김

 

chapter 2 입출금 내역 분석기

2.1 도전 과제

2.2 목표

2.3 입출금 내역 분석기 요구 사항

2.4 KISS 원칙

2.5 코드 유지보수성과 안티 패턴

2.6 단일 책임 원칙

2.7 응집도

2.8 결합도

2.9 테스트

2.10 총정리

2.11 되새김

2.12 도전 과제를 완료하며

 

chapter 3 입출금 내역 분석기 확장판

3.1 도전 과제

3.2 목표

3.3 확장된 입출금 내역 분석기 요구 사항

3.4 개방/폐쇄 원칙

3.5 인터페이스 문제

3.6 명시적 API vs 암묵적 API

3.7 다양한 형식으로 내보내기

3.8 예외 처리

3.9 빌드 도구 사용

3.10 총정리

3.11 되새김

3.12 도전 과제를 완료하며

 

chapter 4 문서 관리 시스템

4.1 도전 과제

4.2 목표

4.3 문서 관리 시스템 요구 사항

4.4 설계 작업

4.5 리스코프 치환 원칙(LSP)

4.6 대안

4.7 기존 코드 확장과 재사용

4.8 테스트 위생

4.9 총정리

4.10 되새김

4.11 도전 과제를 완료하며

 

chapter 5 비즈니스 규칙 엔진

5.1 도전 과제

5.2 목표

5.3 비즈니스 규칙 엔진 요구 사항

5.4 테스트 주도 개발

5.5 모킹

5.6 조건 추가하기

5.7 플루언트 API 설계

5.8 총정리

5.9 되새김

5.10 도전 과제를 완료하며

 

chapter 6 트우터

6.1 도전 과제

6.2 목표

6.3 트우터 요구 사항

6.4 설계 개요

6.5 이벤트에서 설계까지

6.6 작업 순서

6.7 비밀번호와 보안

6.8 팔로워와 트웃

6.9 Position 객체

6.10 총정리

6.11 되새김

6.12 도전 과제를 완료하며

 

chapter 7 트우터 확장판

7.1 도전 과제

7.2 목표

7.3 이전 줄거리

7.4 영구 저장과 저장소 패턴

7.5 함수형 프로그래밍

7.6 사용자 인터페이스

7.7 의존관계 역전과 의존관계 주입

7.8 패키지와 빌드 시스템

7.9 한계와 단순화

7.10 총정리

7.11 되새김

7.12 도전 과제를 완료하며

 

chapter 8 결론

8.1 프로젝트 기반 구조

8.2 되새김

8.3 의식적 연습

8.4 다음 단계와 추가 자료 

리뷰

 

O'REILLY의 새로운 책이 나왔습니다.

'실전 자바 소프트웨어 개발'이라는 책으로 이번 표지는 칼라망가베이라는 구세계원숭이를 모델로 하고 있습니다.

많은 책들이 존재하지만 좋은 품질의 소프트웨어를 개발하는 데 실용적인 도움을 주는 책을 찾기 어렵고 이런 점을 감안했을 때 좋은 개발서라는 옮긴이의 말로 책이 시작됩니다. 정말 그런지 한번 꼼꼼히 리뷰해보려고 합니다.

이 책의 대상 독자는 어느정도 프로그래밍에 대한 경험이 있는 사람을 대상으로 합니다. 책에서는 if문에 대해서 설명하고 있지 않기 때문에 대학교를 졸업하는 시점, 프로그래밍 경력이 얼마되지 않았지만 존재하는 개발자를 대상으로 하고 있는 것 같습니다.

 

책에서는 모든 장에 걸쳐 SOLID 원칙을 설명합니다.

SOLID 원칙이란,

S : 단일 책임 원칙(Single Responsibility Principle)

O : 개방/폐쇄 원칙(Open/Closed Principle)

L : 리스코프 치환 원칙(Liskov Substitution Principle)

I : 인터페이스 분리 원칙(Interface Segregation Principle)

D : 의존관계 역전 원칙(Dependency Inversion Principle)

 

총 5개의 원칙의 앞글자를 따서 만든 원칙으로 소프트웨어 유지보수를 쉽게 도와주는 설계 원칙을 말합니다.

2장에서는 SRP 원칙에 대해서 설명하고 있습니다. 기본적인 예제를 통해 상세한 설명을 하고 있으며, Junit을 통한 테스트에 대한 내용도 다루어주고 있어서 굉장히 알찬 책이 아닌가 라는 생각을 들게 했습니다. 

3장은 OCP 원칙, 4장은 LSP 원칙 등 이렇게 차근차근 원칙에 대해서 설명하며 챕터를 진행하고 있습니다. 

 

 

5장에는 TDD, 테스트 주도개발이라는 내용을 다루고 있습니다. 책에서는 모든 코드에 대해 테스트 코드를 통해 70~90%의 커버리지를 가져아 한다고 말합니다. 사실상 70~90%의 커버리지를 가지기도 어렵습니다. 개발 기간이 짧은 시점에서 테스트와 같이 개발을 하다보면 개발 일정에 무리를 주는 경우도 존재합니다. 가령 테스트 케이스가 존재 하지 않는 시점에서 본인이 개발한 부분에 대해서만 테스트 코드를 작성하려고 봤더니 배보다 배꼽이 더 큰 상황이 발생하기도 합니다. TDD의 경우 많은 커뮤니티에서 분쟁이 많습니다만, 제 생각에 TDD는 일하는 문화에 맞게, 팀과의 협의를 통해 진행하는 것이 가장 좋은 방법이라고 생각합니다. 테스트 주도 개발이 나쁘다는것이 아니라 테스트 주도 개발을 할 수 있는 상황이라면 정말 좋겠지만 이미 개발이 진행되고 있는 시점에서 테스트 커버리지를 올리면서 개발을 진행하기는 어려움이 있다는 점이라고 이해해주시면 될 것 같습니다.

 

책 내에서 TDD도 같이 다루고 있는 부분에서 작은 책에 많은 내용을 담았구나 라는 생각을 하게 만들었습니다. 속이 꽉 차있는 책이라 읽는 내내 도움이 되는 내용들이 참 많았습니다.

 

 

이 리뷰는 <한빛미디어>로부터 책을 제공받아 작성되었습니다.

댓글