kianms10***
2020-08-22

이제 막 경력을 쌓기 시작한 자바 개발자가 최신 소프트웨어 개발 방법까지 알기란 벅찬 일입니다. 테스트 주도 개발 같은 객체지향 원칙을 배워야 할지, 함수형 프로그래밍을 배워야 할지 갈피를 잡기도 어렵습니다.
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도 같이 다루고 있는 부분에서 작은 책에 많은 내용을 담았구나 라는 생각을 하게 만들었습니다. 속이 꽉 차있는 책이라 읽는 내내 도움이 되는 내용들이 참 많았습니다.
이 리뷰는 <한빛미디어>로부터 책을 제공받아 작성되었습니다.