자바 코드의 품질을 높이는 100가지 방법
타기르 발레예프 지음, 정병열 옮김 / 한빛미디어 / 2025년 3월
평점 :
장바구니담기


※ 한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.

이번 도서 후기는 책의 제목과 같이 자바 코드의 품질을 높이는 100가지 방법에 관한 이야기로,

대다수의 개발자들이 자주 일으킬 수 있는 100가지 실수들에 대한 내용을 담았다.

이 책의 출간 정보를 알고 부터 꼭 한번 읽어보려 했던 책이다.

늘 개발을 하면서 어떻게 하면 더 나은 코드를 작성할 수 있는지 고민한다.

내가 예전에 개발했던 코드들이나 여러 개발자분들이 작성한 코드를 볼 때 리팩토링 요소를 찾으면서 간혹 발견되는 여러 오류사항들이 있는데 내가 경험한 여러 오류 케이스와 함께 현재는 로직 상에 문제가 없지만 시간이 점차 흐르면서 발생할 수 있는 실수들에 관한 내용을 이 책에서 다룬다.

자바 코드를 작성할 때마다 발생할 수 있는 실수의 범주를 총 10가지로 나눈 내용으로 구성되어 있는데, 각 실수에 대한 예시 코드와 설명 그리고 이로 인해 예상되는 파급 효과들을 통해 잘못된 코드 사용으로 인해 발생할 수 있는 사례와 코드를 작성하면서 여러 정적 분석 도구를 통해서 이러한 실수를 감지하여 사전에 예방하는 방법도 다룬다.

1장에서는 코드 품질에 대한 관리 방법에 대한 개요를 다룬다.

코드 스타일과 정적 분석, 그리고 자동화된 테스트와 코드 어설션 등을 다루는 방법을 다루며 이로 인해 코드의 품질을 관리하는 방법을 익힐 수 있다.

2장에서는 표현식에서 발생할 수 있는 실수를 다루는데 숫자의 연산 순위에 대한 잘못된 이해로 발생할 수 있는 오류 사항들과 연산자들을 혼용하고 잘못된 가변 인수를 호출하는 방법과 잘못된 메소들르 참조하는 바인딩 등의 대한 잘못된 사용법으로 인한 여러 문제점을 다루며 이를 정확히 알도록 설명한다.

3장에서는 자바의 프로그램 구조에서 조건문과 반복문, 그리고 잘못된 초기화 순서와 정적 필드의 잘못된 선언들을 통해 프로그램 구조에서 잘못된 코드 사용법으로 인한 발생할 수 있는 문제점들을 다룬다.

4장에서는 숫자를 잘못 사용하는 방식을 다루는데, 개발자라면 한번쯤 접해보았을 수치에 대한 오버플로우와 타입변환과 확장으로 인한 정밀도 손실의 예를 통해서 숫자와 관련한 올바른 코드 작성법과 함께 정확한 이해를 돕고자 개념을 다룬다.

5장에서는 자바에서 흔히 일어날 수 있는 예외에 대한 내용을 다루고, 6장에서는 문자열 처리 과정에서 발생할 수 있는 문제를 다룬다.

char 값을 문자로 간주하거나 대소문자로 변환하고 로케일을 설정한 것과 아닌 것에 대한 차이 및 replaceAll와 indexOf() 메소드의 잘못 사용하는 여러 실수들로 인해 예상과 다른 결과를 얻을 수 있다는 점을 예시 코드를 통해서 알 수 있었다.

7장은 객체를 비교하는 방법을 다룬다. equals()와 hashCode(), 그리고 스케일이 다른 BigDecimal 간의 비교 방법과 동일한 객체를 비교할 때와 비교 메소드가 반환하는 NaN값에 대한 설명, compareTo() 메소드 사용 방식과 구현된 문제를 통해 올바른 객체 비교에 대한 코드 작성법을 익힐 수 있다.

8장은 컬렉션과 맵을 사용하면서 발생하는 13가지의 실수들을 다루는데 특히 8장은 자주 발생하는 실수들이라고 생각한다. 따라서 8장은 컬렉션과 맵에 대한 정확한 이해를 토대로 올바른 코드를 작성할 수 있도록 해야 함을 다시한번 생각했다.

9장은 일부 라이브러리의 메소드를 잘못 이해하고 사용하는 예와 10장은 유닛 테스트 코드를 작성할 때 발생하는 여러 실수들에 대해서 설명한다.

1장부터 10장의 총 100가지의 실수 사례에서 나의 실수 사례도 발견할 수 있었고, 이를 주의해서 작성해야 함을 다시 한번 생각하게 되었다.

뿐만 아니라 이러한 여러 실수 사례를 통해서 발생할 수 있는 결과 뿐만 아니라 이를 경험하고 해결하는 과정들이 얼마나 중요한지 다시한번 느꼈다.

특히 작성한 코드에 대해 정적 분석 도구를 통해 잘못된 코드들을 사전에 찾아서 개선하여 정확한 결과 뿐만 아니라 가독성과 유지보수가 좋은 코드를 작성할 수 있도록 해야함도 느꼈다.

이 책은 특히 내용을 정리하면서 읽었는데, 더 머릿 속에 남았고 여러번 리마인드해볼 수 있었던 점이 좋았다.

개발자라면 자신이 작성한 코드가 올바른 결과를 도출하고, 내가 작성한 코드를 보는 다른 개발자들이 코드를 읽기에 가독성이 좋을지, 내가 작성한 코드의 의도를 이해할 수 있을지, 그리고 유지보수가 좋을지에 대한 많은 고민을 하면서 코드를 작성할 것이다.

이러한 고민을 갖고 있는 개발자분들 뿐만 아니라 자바를 처음 배우는 분들에게 유익할 책이다.

어려울 수 있는 내용들도 있겠지만 이해하기에 쉽게 설명해주고 예시 코드도 포함되어 있기 때문에 자바 개발자 모든 분들에게 도움이 될 것이라고 생각한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
Vue 3와 타입스크립트로 배우는 프런트엔드 개발 - 블록 코딩과 최신 Vue 기술로 견고한 모던 프런트엔드 구축하기
WINGS 프로젝트.사이토 신조 지음, 손민옹 옮김, 야마다 요시히로 감수 / 한빛미디어 / 2025년 1월
평점 :
장바구니담기


이 책은 Vue의 3버전을 토대로 타입스크립트로 코드를 작성하는 방법을 배울 수 있다.

도입편, 기본편, 응용편으로 내용 구성이 되어 있다.

먼저 도입편에서는 본격적인 코딩을 배우기에 앞서 자바스크립트의 역사를 시작으로 이 책의 주 내용인 Vue가 등장하게 된 이유와 특징을 소개한다.

또한 Vue 3버전이 출시됨에 따라 어떤 부분이 좋아졌는지, 어떤 부분이 변경되었는지도 알 수 있어 이전 버전을 사용한 분들은 특히나 간략히 소개된 이부분을 알아두면 좋을 것 같다.

이후 Vue를 사용하기 위한 도구 설치와 프로젝트를 생성하고 실행하는 방법을 다루고 무엇보다 Vue를 이루는 요소들과 문법 구조 및 코드를 작성하는 방법도 다룬다.

개인적으로 Vue를 처음 사용해보는 개발자분들이라면 이 내용은 확실히 익혀 이후 내용을 공부하는게 도움이 되기 때문에 이 챕터는 소홀히 하지 않았으면 한다.

기본편은 Vue로 데이터를 다루는 기법들을 다룬다.

디렉티브라는 속성을 통해 자바스크립트와 타입스크립트 코드와 연동을 하는 방법과 함께 연동한 이후 이를 통해 양방향으로 데이터를 바인딩하고 출력하는 기본 기능을 앞서 다룬다.

이후에는 실제로 프로그래밍 과정에서 사용하는 여러 문법들을 다루는데 자바를 처음배울 때와 마찬가지로 기본적인 조건문과 반복문 처리 방식도 소개한다.

이후에는 여러 컴포넌트와 결합하는 방법을 다루는데 특히 이 결합 방식에서 부모와 자식의 컴포넌트를 어떻게 조합하는지 이러한 관계에서 데이터를 어떻게 바인딩처리하는지를 알 수 있다.

무엇보다 Vue에서 화면과 경로를 연결하고 이 경로에 대응하는 표시를 하는 라우팅 기능도 소개하는데, 이 부분은 화면 전환에 대한 처리 흐름을 통해 이해하는 것을 추천하고 예제 코드를 통해 라우터의 기능을 다루기 위한 디렉토리 구성과 코드 작성법을 따라해보는 것을 추천한다.

또한 Vue 3부터 기본으로 제공하는 데이터를 일관되게 처리하는 상태 관리 기능인 Pinia라는 모듈도 처리 흐름과 예제 코드를 통해 내용을 이해하여 실제로 실무에서도 이를 적용해보는 것을 추천한다.

응용편은 심화 내용을 다룬다.

비동기 처리 방식과 함께 Vue에서 단위 테스트 코드를 작성하고 테스트를 하는데 사용하는 모듈인 Vites와 Vue Test Utils의 내용도 다룬다.

따라서 도입편과 기본편을 이해했다면 응용편의 내용도 반드시 실습하여 좀 더 심화된 기능을 사용해볼 수 있었으면 한다.

이 책은 나와 같이 Vue를 사용하는데 익숙하지 않는 분들이 내용을 예제코드를 통해 이해하여 기초를 다질 수 있는 입문서라고 생각한다.

실무에서 알아야 하는 내용들만 다루고 있어 핵심 내용 또한 공부해볼 수 있다.

특히 코드를 작성하는 방법과 함께 이를 이루는 구조와 모듈들도 소개하고 있어 더더욱 도움이 되었다.

나와 같이 Vue를 공부해보고 싶은 분이라면 입문서로 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
그로킹 동시성 - 다양한 이야기와 재미있는 일러스트로 풀어나가는 동시성
키릴 보브로프 지음, 심효섭 옮김 / 길벗 / 2024년 11월
평점 :
장바구니담기


동시성은 애플리케이션을 개발하면서 이를 갖추기 위한 시스템을 만들려면 동시성에 대한 이해가 중요하다고 생각한다.

한정된 자원을 가지고 빠른 성능을 얻기 위해서 지연 시간을 드러내지 않고 기존에 처리하던 자원의 활용도를 높여서 성능과 처리율을 크게 개선하기 위해서 동시성이라는 기법을 능숙하게 다를 수 있어야 한다.

특히나 시스템이 복잡해지고 서로 통신하는 여러 구성 요소들 간에 동시성을 적용함에 있어서 확장성이나 여러 구성 요소들을 더 단순하게 분해할 수 있는 느슨한 결합의 개념에서 이 기술은 중요하게 되었다.

이 책은 동시성이 왜 중요한지 이를 도입하면 어떠한 점이 좋은지 등을 먼저 소개하고 이후에는 동시성에 대한 개념을 이해하기 위한 선행 개념을 소개한다.

이를 위해서 순차적으로 실행하는 것에 대한 개념을 통해 병렬로 실행하는 것과의 비교를 해볼 수 있고 동시성과 병렬성이 어떠한 점에서 다른지에 대해서도 다룬다.

동시성은 여러 개의 작업을 동시에 진행하는 것으로 프로그래밍 언어와 프로그램 설계에 따라 결정되지만 병렬형은 실행환경에 따라서 자원들과 작업 간의 독립성이 필요로 하는 점에서 실행 환경에 의해 결정되다는 차이도 이해할 수 있다.

이후에는 병렬 실행의 이점을 살리기 위한 장치의 사용을 설명하는데 클록 속도가 빠르고 여러 명령을 병렬로 실행하는 CPU와 비교적 느린 클록 속도로 한가지 명령만을 모든 코어에서 실행하여 대규모 병렬로 실행 속도가 빠른 GPU를 비교한다.

그리고 동시적 애플리케이션을 작성하기 위한 설명하기 위해 스레드에 대한 설명도 다루고 작업 간에 효율적인 정보 교환을 위한 방법과 애플리케이션에 적합한 통신 유형을 선택하는 방법, 그리고 동시적 애플리케이션을 스레드 풀에 대한 프로그래밍 기법도 다룬다.

중반부부터는 애플리케이션에 대한 병목 지점을 이해하기 위한 분석 방법을 다루고 병렬 하드웨어 없이도 여러 작업을 동시에 처리할 수 있는 멀티태스킹 기법을 소개하며 실제로 동시적 애플리케이션을 개발할 때 자주 사용하는 패턴인 파이프라인, 맵, 포크/조인, 맵/리듀스에 대한 개념도 익힐 수 있다.

또한 동시성에서 흔히 겪을 수 있는 문제에 대해서 이를 식별하고 해결하기 위한 방법과 함께 교착상태인 데드락과 라이브락이 어떤 것이고 이를 식별하고 해결하는 방법도 소개한다.

이후에는 동시성 디자인 패턴인 프로듀서와 컨슈머 패턴, 그리고 리더와 라이더 패턴도 공부해볼 수 있다.

후반부에는 중반부까지 다룬 개념들을 바탕으로 특정 시나리오를 바탕으로 애플리케이션을 개발하는 상황을 가정하고 설계하는 방식을 함께 해볼 수 있다.

이 부분은 중반부까지의 내용을 이해하고 나서 읽어보았으면 한다.

그래야 실제 상황에서 고려해야 할 요소들을 생각하고 그 부분이 책에 설명한 내용과 함께 읽어보면 더욱 도움이 될 내용이다.

동시성은 어렵고 고급 기술이라고 생각할 수 있지만 이러한 내용도 익히고 공부해야 더 견고한 시스템을 만들 수 있다고 생각한다.

하지만 이 책에서 설명하는 내용과 용어들이 어려울 수 있지만 그림을 통해 내용을 이해해본다면 어려울 수 있는 내용도 쉽게 이해될 수 있을 것이라고 생각한다. 그만큼 이 책은 동시성에 대한 내용을 그림을 통해 쉽게 설명한다.

개발자라면 동시성에 대한 개념의 이해가 꼭 필요하다고 생각한다.

동시성에 대한 개념을 익히고 싶은 분들에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
스프링 교과서 - 기초부터 탄탄하게 배워서 바로 쓰는 스프링 입문
라우렌치우 스필커 지음, 정성권 옮김 / 길벗 / 2024년 5월
평점 :
장바구니담기


"스프링 교과서"라는 책 제목에서 유추해볼 수 있듯이 스프링 프레임워크에 관한 내용을 담은 입문서이다.

스프링 프레임워크는 자바 개발자라면 한번쯤 접해본 가장 많이 선택되어 사용되는 프레임워크이다.

이는 스프링으로 명명한 이유에서 알 수 있듯 한번 사용해본 개발자라면 이 프레임워크의 장점을 알 수 있을 것이다.

많이 쓰이는 프레임워크인만큼 이를 다루는 책들도 시중에 많이 출판되었다.

이 책도 그 중에 하나인데 스프링 프레임워크도 최신 기술을 사용하여 점점 다루는 기술들이 변하고 다양해지는 만큼 여러 책을 보면서 느끼는 것이지만 최신 기술 내용이 담긴 책을 선택하는 것이 좀 더 도움이 될 수 있다고 생각한다.

이 책도 최근 발매된 스프링의 최신 입문서이다.

총 15장으로 이루어진 입문서로 첫번째 장에서는 단순한 예제를 시작으로 스프링을 적용하는 방식들에 대해서 설명한다. 스프링을 사용하려는 개발자라면 최신 기술도 중요하지만 가장 중요한 스프링 코어와 스프링 MVC 등의 기초 내용을 다루는 첫번째 장을 꼼꼼히 읽어야 하는 부분이다.

두번째 장부터는 직접 프레임워크를 생성하고 코드를 작성하면서 각각의 스프링의 요소들의 역할과 처리 흐름들을 이해할 수 있도록 예시 코드와 함께 설명을 덧붙인다.

이후에는 스프링의 코어 요소들을 이해를 한 후부터는 스프링 웹과 REST 서비스와 데이터를 처리하는 방식 및 구현한 애플리케이션을 실제 실행해볼 수 있는 테스트 과정도 함께 다룬다.

이 내용들에도 앞의 내용 구성과 같이 예시 코드와 그림 설명을 덧붙여서 큰 흐름을 단계별로 따라가며 익힐 수 있도록 되어 있어 아예 구현을 해보지 않은 분들이라도 어렵지 않은 내용이라고 생각한다.

나는 항상 입문서를 읽을 때 큰 흐름을 직접 따라하고 내용 정리를 통해 이해하는 편이다.

이 책도 내가 익히는 방법대로 구성되어 있어 핵심 내용과 함께 하나의 큰 흐름을 처음부터 끝까지 밟아갈 수 있도록 구성되어 있다는 점이 처음 접해보는 분들도 책의 흐름을 따라가보는 것을 추천한다.

개발자로서 스프링 기술은 개발자를 시작한 처음부터 지금까지 계속 사용중이다.

이미 알고 있는 기본 개념일지라도 시간을 내어 책의 구성대로 내용을 따라가며 한번 더 개념을 정리해볼 수 있어 도움이 되었다.

아무리 사용하고 있는 기술이고 알고 있는 기술이라도 매번 느끼는 것이지만 시간을 내어 정리하다보면 이 과정에서 또 알고 생각해볼 수 있는 내용들이 있다.

이번에도 이 책을 읽으면서 스프링의 개념을 쭉 정리해볼 수 있었다.

시간을 내어 스프링을 접해보려고 하거나 깊이있는 이해가 부족한 분들, 개념을 처음부터 알아가길 원하는 분들 모두에게 추천한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
최고의 프로덕트는 무엇이 다른가 - 더 나은 소프트웨어를 만드는 방법
유진호 지음 / 비제이퍼블릭 / 2024년 5월
평점 :
장바구니담기


새로운 소프트웨어나 서비스를 제대로 만들기 위한 과정을 배울 수 있는 책이다.

이 책은 크게 총 다섯 챕터로 구성되어 있다.

소프트웨어 개발이 무엇이고, 가장 어렵고 불확정한 일이지만 이 과정에서 성공적인 성과를 이루기 위해서 각 영역을 담당하는 사람들이 어떤 부분을 고려해야 하는 지 등을 다룬다.

특히 소프트웨어 개발은 여러 환경의 요인과 요구사항 등으로 인해서 한번에 완료할 수 없다는 점을 인지하여 단편적인 면만 보는 것이 아닌 폭넓은 관점에서 보아야 한다.

이렇기 때문에 각 영역을 담당하는 사람들은 각자의 위치에서 고려해야 하는 영역들도 설명한다.

소프트웨어 개발은 불확실성과의 싸움이기 때문에 이를 효과적으로 다루고 현실적인 결과물을 만들기 위해서 유연한 개발 원칙을 담은 EoA 라는 관점도 함께 다루기 때문에 이를 토대로 언제 개발을 시작하고 어떠한 순서대로 진행할 지에 대한 전략도 함께 세울 수 있게 해준다.

또한 프로젝트의 목표와 가치를 이해하여 공유함을 통해 최종 결과에 대한 결과물을 이해할 수 있게 해주어 각 과정별로 어던 계획을 세울 수 있을지에 대해서도 생각해볼 수 있게 해준다.

또한 고객과의 끊임없는 소통을 통해서 개발 일정을 확보하고 조율할 수 있고, 고객의 참여를 통해서 피드백을 받아 견고한 소프트웨어를 만들 수 있고 개선 사항에 대해서는 개선할 방법도 마련할 수 있다.

이후에는 소프트웨어를 만들고 운영할 때 고객과의 신뢰를 유지하고 더 나아가 리스트가 발생했을 때 이를 감당할 수 있는 방법을 고려하는 내용도 다룬다.

이 내용에서는 가장 핵심적인 역할은 고객과의 소통으로 고객의 니즈와 요구사항을 파악하여 이를 통해 피드백을 얻는 방법도 함께 다룬다.

또한 실제로 작업하는 개발자들이 어떻게 효율적으로 작업할 수 있는 지원 방법에 소개한다.

특히 개발자들의 업무를 관리할 때 업무의 부하가 발생하지 않도록 효율적인 업무 분배와 여러 자원을 통해서 생산성을 향상시킬 수 있는 방법도 다룬다.

하나의 소프트웨어와 서비스를 완성하기 까지, 그리고 완성 후의 유지보수 기간까지 각 과정에서 생산성과 완성도를 높이기 위해서 참고할 내용들을 소개하여 결과물 뿐만 아니라 이 결과물을 만들기 위해 참여하는 작업자들의 환경을 개선하는 방법도 이해할 수 있어 개발자뿐만 아니라 서비스 개발에 참여하는 분들 모두가 참고할 내용이 가득하다.

좀 더 나은 환경에서 좀 더 완성도있는 서비스를 개발하고 운영하기를 원하는 분들이 한번쯤은 읽어보면 좋을 책이다.


댓글(1) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
김종필 2024-07-08 17:26   좋아요 0 | 댓글달기 | URL
안녕하세요. 좋은 책을 많이 읽으시는 분 같아서 좋아요를 눌러 봤습니다.
같은 동종 업계 분이라면 대화를 좀 해보고 싶다는 생각이 들 정도네요.