처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막
좋은 코드, 나쁜 코드 - 프로그래머의 코드 품질 개선법, 2023년 세종도서 학술부문 추천도서
톰 롱 지음, 차건회 옮김 / 제이펍 / 2022년 5월
평점 :
장바구니담기


개요

이 책은 크게 이론/실전/단위 테스트로 총 3개 파트로 나뉘어 있습니다.

1부 이론 편에서는 코드품질, 추상화 계층, 다른 개발자와의 코드 계약, 오류에 대한 내용을 다룹니다. 좀 더 자세하게는

1. 고품질의 소프트웨어를 만들기 위해서 코드를 어떻게 작성해야 하는지

2. 추상화 수준을 어떻게 가져가면 코드를 이해하기 쉽고, 재활용하기 쉽고, 테스트를 쉽게 할 수 있는지

3. 자신이 작성한 코드를 다른 개발자가 사용하려면 어떻게 코드 계약을 맺어야 하는지

4. 문제가 어떻게 발생하고 어떻게 대처해야 하는지에 대해서 배웁니다.

2부 실전 편에서는 가독성 높은 코드 작성, 예측 가능한 코드 작성, 코드를 오용하기 어렵게 만들라, 코드를 모듈화 하라, 코드를 재사용하고 일반화하라에 대한 내용을 다룹니다. 세부 사항으로는

1. 다른 개발자가 오해하지 않도록 코드 작성하고, 의도치 않게 오류를 발생시키는 코드를 예방하는 방법

2. 코드가 오용하기 않도록 작성하는 방법

3. 코드를 모듈화 하는 방법

4. 같은 코드를 재사용하는 방법에 대해서 배웁니다.

3부 단위 테스트 편에서는 단위 테스트의 원리, 단위 테스트의 실제에 대해서 배웁니다.

예상 독자

이 책을 이해하려면 정적 타입의 객체 지향 언어(자바, C#, TypeScript, C++, Swift, Kotlin 등등) 중 하나 정도는 잘 알아야 이해하기 쉬울 것 같습니다. (코드를 이해하기 위해서) 이제 막 프로그래밍 입문을 하신 분들께는 추천드리지 않습니다.

총평

프로그래밍 언어에 익숙한 사람이 좀 더 좋은코드를 작성하기 위해서 어떻게 해야 될지 고민하시는 분들께 추천드립니다. 다시 한번 말씀드리지만 프로그래밍에 익숙하지 않으신 분들께는 추천드리지 않습니다.

책에 대한 아쉬운 부분이 조금 있다면 이론 부분이 굉장히 지루할 수 있다고 생각합니다. 책에 나와 있는 코드량이 많기는 하지만 그 많은 코드에 대한 더 많은 이론적이 내용이 오히려 책에 대한 흥미를 떨어 뜨릴 수 있다는 생각이 들었습니다. 책이 생각보다 두껍고 내용이 방대해서 모든 내용을 이해하려고 한다면 시간이 걸릴 것 같다는 생각도 들었습니다. 책의 내용을 이해하기 위한 보조 지식도 많이 필요하다고 느꼈습니다. 의존성 주입, 디자인 패턴(널 객체 패턴, 팩토리 메서드 패턴, 빌더 패턴 등등), 함수형 프로그래밍 등등.

반면 책의 장점에 대해서 말씀드리자면 책의 구성이 괜찮고, 어떤 특정 문제가 주어지는 코드를 보여주며 이 코드에 대한 문제는 무엇이고 이것을 어떻게 개선해 나갈 수 있는지 해결책을 제시하고 있는 부분이 좋았습니다. 그리고 어떤 문제가 있는데 그것들이 왜 문제가 되는지 나열해 주는 것도 좋았습니다. 예를 들면 7.1에서 "불변 객체로 만드는 것을 고려하라"라 부분에서 가변 객체가 왜 문제가 되는지 설명하고 있는데 그 이유는 가변 객체는 추론하기 어렵고, 가변 객체는 다중 스레드에서 문제가 발생할 수 있다는 것을 이유 1, 이유 2 이런 식으로 설명해 주고 있어서 매우 좋았습니다. 마지막으로  flow-chart와 코드에 대한 상세 주석이 이 책의 장점이라 할 수 있을 것 같습니다.

"제이펍의 [믿고 보는 제이펍 IT 전문서 리뷰어]_2기 활동을 통해 작성된 서평입니다. "

출처: https://geunyang93.tistory.com/94 [Dev Story:티스토리]


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
소플의 처음 만난 리액트 - 리액트 기초 개념 정리부터 실습까지 소문난 명강의
이인제 지음 / 한빛미디어 / 2022년 5월
평점 :
구판절판


 

유튜브 링크

https://www.youtube.com/watch?v=KkHrsjyqbYg 

 

인프런 무료 강의

https://www.inflearn.com/course/%EC%B2%98%EC%9D%8C-%EB%A7%8C%EB%82%9C-%EB%A6%AC%EC%95%A1%ED%8A%B8#curriculum

목차

0장 준비하기

1장 리액트 소개

2장 리액트 시작하기

3장 JSX 소개

4장 엘리먼트 렌더링

5장 컴포넌트와 Props

6장 State와 생명주기

7장 훅

8장 이벤트 핸들링

9장 조건부 렌더링

10장 리스트와 키

11장 폼

12장 State 끌어올리기

13장 합성 vs. 상속

14장 컨텍스트

15장 스타일링

16장 미니 프로젝트_미니 블로그 만들기

 

백엔드 개발자인 저로서 백엔드 관련 기술만 공부하다가

프론트 기술은 언젠간 습득해야겠다는 생각을 가지고 있었습니다.

그러던 찰나에 소플의 처음 만난 리액트를 접하게 되었습니다.

리액트는 다른 라이브러리보다는 러닝 커브가 높다는 얘기를 많이 들었기에

책을 접할 때 조금 걱정이 되었습니다.

이 책은 리액트 입문자의 눈높이에 맞게 설명이 되어 있고,

리액트를 시작하기 전에 chapter0 준비하기 부분에서 html css javascript

기초 지식을 설명하고 있어 이해를 쉽게 돕고 있기 때문에 크게 걱정하지 않아도 될 거

같습니다. 다양한 그림의 등장과 컬러풀한 이미지만 봐도 이해도가 높아지는

느낌이 들었습니다.

리액트를 왜 배워야 하는지는 책의 서두에도 나오지만

시장에서 리액트 개발자를 많이 원하고 있고 JD에도 프런트엔드 개발자 채용에

있어 많이 요구하는 기술 중에 하나이기 때문입니다.

그렇다면 리액트가 핫한 이유는 빠른 업데이트와 렌더링 속도 재사용성이

높은 컴포넌트 기반의 구조, 메타(구 페북)의 지원,

리액트 네이티브를 통한 모바일 앱 개발이 가능하다입니다.

(책 내용 중) 반면에 단점도 없지 않아 있지만 러닝 커브가 높고 상태 관리가 복잡하다는

것입니다.

책을 한번 정독하게 되면 방대한 공식문서를 읽는 것보다 리액트의 개념,

문법이 튼튼해지는 느낌이 들 것 같습니다.

책의 후반부에 기초 개념을 토대로 미니 프로젝트 실습도 할 수 있어

실제 만들어보며 개념을 리마인드 할 수 있는 부분도 준비되어 있습니다.

책 읽다 이해가 되지 않는 부분은 유튜브나 무료 강의(인프런)를 통해 복습할 수 있는

기회까지 있으니... 올해는 무조건 프런트엔드 기술 하나는 가져갈 수 있을 것 같습니다.

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



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
AWS로 시작하는 인프라 구축의 정석 - 견고한 엔터프라이즈 프로덕션 환경을 만들고 지키는 법 I♥Cloud (아이러브클라우드) 23
나카가키 겐지 지음, 김모세 옮김 / 제이펍 / 2022년 6월
평점 :
장바구니담기


 

샘플 소스 : https://github.com/moseskim/aws-intro-sample

 

독자

  • AWS로 인프라 구축을 하고자 하는 엔지니어
  • 클라우드 인프라와 네트워크/서버 구축을 학습하려는 분
  • 네트워크 기초 지식이 있는분
  • 리눅스 사용 경험이 있는 분

 

회사에서 AWS를 사용하고 있지 않아서 항상 AWS 관련 용어만 나오면 지레 겁을 먹곤 했습니다. 책을 보기 전까지 Route 53, IAM, cloud watch 등등 어디선가 많이 들어봤지만 어떤 기능인지는 모르는 백지상태였습니다. 이 책의 장점은 각각의 chapter에 맞게 상세한 설명과 운영 노하우, 그리고 그림(설정 화면, 인프라 스트럭쳐)을 통한 실전 예제를 직접 따라 할 수 있어서 이해하기 쉽다입니다.

실제 AWS 관리 콘솔의 화면을 단계별로 페이지에 넣어서 따라 하기 쉽게 되어 있습니다. 그리고 각 개념에 대한 Note나 주의 부분을 통해 부족한 설명을 도와주고 있습니다. 책의 챕터 순서도 계정 생성 -> IAM을 통한 인증, 권한 설정 -> VPC를 통한 네트워크 구축 -> 점프 서버 구축 -> 웹서버 구축-> 로드 밸런서 구축 -> RDS 구축 등 스탭 바이 스탭으로 이뤄져 있어 책의 전계가 매끄럽게 이어졌습니다.

중간중간 주의 부분에서 이용료 과금에 대한 팁들도 나와 있습니다. 13장에서는 그동안 배웠던 것들을 종합적으로 샘플 애플리케이션(ruby on rails)을 위한 인프라를 구축하는 연습을 합니다. 그리고 마지막으로 그동안 배웠던 인프라에 대한 예산 요금을 소개하며 비용 산정까지 해볼 수 있는 좋은 정보를 제공해 주고 있습니다. 아쉬운 점은 AWS의 일부 기술에 (Lambda나 DynamoDB 등등) 대해서는 다루지 않습니다.

종합적으로 봤을 때 저처럼 AWS경험이 많이 없으며 혼자서 공부해보고 싶고, 보면서 따라 하고 싶은 분들이 보기에 좋은 책입니다. 따라서 AWS 입문자들에게 추천드리고 싶습니다.

 

"제이펍의 [믿고 보는 제이펍 IT 전문서 리뷰어]_2기 활동을 통해 작성된 서평입니다. " 



댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
김상형의 SQL 정복 - Oracle, MSSQL, MariaDB 기반 실습환경 소문난 명강의
김상형 지음 / 한빛미디어 / 2021년 5월
평점 :
장바구니담기


 

책을 처음 받았을 때 엄청난 두께에 압도되었지만 책 초반부의 툴 세팅하는 부분이랑 연습문제(+풀이) 제외하면 그렇게 겁을 먹지 않아도 될 것 같습니다. 이 책의 장점은 실습 환경으로 오라클, mssql 그리고 maria를 전부 다루며 각각의 환경에 대한 풍부한 연습문제를 제공하는 것에 있는 것 같습니다. 제가 속한 근무환경에서도 여러 종류의 DBMS를 바꿔가며 사용하고 있는데 이러한 환경에서 근무하고 계시는 분들에게는 적합할 것 같습니다. 그리고 각각의 세부 문법들을 비교 설명해 주기 때문에 좀 더 이해하기 쉬웠습니다. 단순히 DB에 대한 이론적인 내용이 아닌 실제 실행환경에 유용한 툴에 대한 팁들(경고창,커밋/롤백)도 같이 다루기 때문에 바로 실무에 적용할 수 있는 점도 좋았습니다.

요즘 특히 트랜잭션에 대한 내용이 점점 중요해지는 것 같은데 마침 이 책을 리뷰하면서 그 부분을 읽었고 책의 내용 중에서 락과 트랜잭션 부분이 가장 좋았던 거 같습니다. 

1) READ COMMITED : 커밋된 읽기만을 허용하며 SELECT 문을 실행할 때 공유락을 건다.(중략)

2) REPETEABLE READ : 읽기를 마치더라도 공유락을 푸지 않으며 트랜잭션이 완전히 종료될 때까지 락을 유지한다.(중략)

3) SERIALIZABLE : 가장 높은 수준의 격리 수준이다. 데이터를 읽는 동안 다른 트랜잭션이 이 데이터를 읽지도 쓰지도 못할 뿐만 아니라 새로운 레코드를 추가하는 것도 허용하지 않는다.(중략)

어려운 개념임에도 이런 식으로 이론적인 설명을 쉽게 잘 풀어놔서 초보자가 읽어도 이해하기 쉽지 않을까 생각합니다.

예전 중고등학교 때 풀던, 설명 잘 된 수학 개념서 같이 group by, having에 대해서 배웠으면 그에 대한 연습문제 -> 이런 식이기  때문에 DB초보자들에게는 정말 좋은 책일것 같습니다. sql 연습하기에도 제격인 것 같습니다. 대학교에서 공부는 데이터베이스 이론서나 real mysql처럼 엄청나고 방대한 내용의 책이 부담스럽다면 이 책을 추천드립니다.

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

출처: https://geunyang93.tistory.com/88 [Dev Story:티스토리]


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
쏙쏙 들어오는 함수형 코딩 - 심플한 코드로 복잡한 소프트웨어 길들이기
에릭 노먼드 지음, 김은민 옮김 / 제이펍 / 2022년 4월
평점 :
장바구니담기


이 책은 장점은 단계별 설명, 결론과 요점 정리, 용어 설명과 간단한 연습문제에 있는 것 같습니다.

책의 전반적인 부분은 분리할 코드를 찾고 래팩터링 하는 방법과 암묵적 입력과 출력을 찾는 방법을 통해 엉켜 있는 코드를 풀고 좋은 코드로 바꾸는 부분이 주를 이루고 있습니다.  이 책의핵심은 함수형 프로그램에 대해서 액션과 계산, 데이터를 구분해서 생각하고, 일급 추상을 생각하는 것이 핵심입니다.  javascript로 예제코드가 작성되어 있지만 예제가 크게 어렵지 않아 상관은 없을 것 같습니다.

이 책의 내용은 함수형 프로그램밍에 대한 이해를 돕긴 하지만 이와 별개로 좋은 코드를 작성하기 위한 사고를 길러주고 있습니다. 코드를 수정하기 전 후로 나뉘어서 어떻게 개선되는지 알려줌으로써 이해를 돕기 때문에 받아들이기 쉬웠던 것 같습니다. 책의 내용이 워낙 방대하긴 하지만 함수형 프로그래밍 입문을 하시려는 분들이 읽기 적합할 것 같습니다.

액션과 계산, 데이터

도대체 액션과 계산,데이터 가 무엇이냐고 묻는다면 피자 가게를 예시로 액션과 계산, 데이터가 무엇인지 아래와 같이 생각해 볼 수 있습니다.

액션 : 액션은 호출 횟수와 시점에 의존하는 것을 말합니다. 

예) 반죽 펴기, 피자 배달, 재료 주문

계산 : 어떤 것을 결정하거나 계획하는 것이 계산입니다. 계산은 실행해도 다른 곳에 영향을 주지 않으며 아무 때나 사용해도 됩니다.

예) 조리법에 나온 것을 두 배로 만들기, 쇼핑 목록 결정하기

데이터 : 변경 불가능한(immutable) 것, 이벤트에 대한 사실

예시) 고객의 주문, 영수증, 피자 조리법

이 책의 마지막 장에서 나와있는 정리 부분을 옮겨 적고 마무리 하겠습니다.

액션과 계산, 데이터

  •  코드에서 액션과 계산, 데이터를 구분해 가장 문제 되는 부분을 찾자
  • 액션에서 계산을 빼내 재사용하기 좋고 테스트하기 쉬운 코드로 리팩토링
  • 암묵적인 입력과 출력을 명시적인 것으로 바꿔 액션을 개선
  • immutable을 구현해 데이터 읽기를 계산으로 만들고
  • 계층형 설계로 코드를 구성하고 개선한다.

일급 추상

  • 언어의 문법을 일급으로 만들어 코드를 추상화
  • 함수형 반복과 혐수형 도구를 사용해 고차원으로 추론
  • 함수형 도구를 연결해 데이터 변환 파이프라인을 만든다.
  • 타임라인 다이어그램을 통해 동시성 분산 시스템을 이해
  • 버그를 없애기 위해 타임라인을 활용
  • 고차 함수로 안전하게 상태를 변경
  • 반응형 아키텍처를 사용해 원인과 효과의 결합을 줄입니다.
  • 세상과 상호작용하기 위해 어니언 아키텍처 설계를 서비스에 적용



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막