이 영역을 누르면 첫 페이지로 이동
컴01기 블로그의 첫 페이지로 이동

컴01기

페이지 맨 위로 올라가기

컴01기

힝입니다.

자바 코딩의 기술 : 똑똑하게 코딩하는 법

  • 2021.01.09 19:51
  • 📚 서적 리뷰

한 번만 읽을 게 아니라 여러 번 읽으면서 체화시켜야 하는 책

리팩토링, 클린코드에 대해 관심이 있다면 두고두고 읽어야하는 책

자주 쓰이는 70가지의 예제를 통해 '똑똑하게 코딩하는 법'을 배울 수 있는 책

 

리뷰 순서

  • 목차
  • 이 책의 설명 방식
  • 이 책을 읽기 위해 필요한 지식
  • 인상 깊었던 점
  • 이런 분들에게 추천합니다!

 

이 게시글은 위의 순서대로 작성됐습니다!

 

목차

1장. 우선 정리부터

2장. 코드 스타일 레벨 업

3장. 슬기롭게 주석 사용하기

4장. 올바르게 명명하기

5장. 문제 발생에 대비하기

6장. 올바르게 드러내기

7장. 객체 디자인

8장. 데이터 흐름

9장. 실전 준비

 

이 책의 설명 방식

  1. 코드 조각을 제시한 후 무엇이 왜 잘못되었는지 설명합니다.
  2. 코드를 더 나은 해법으로 어떻게 바꾸는지 보여줍니다.

(좌) 잘못된 코드, (우) '쓸모없는 비교 피하기' 방법으로 개선된 코드

  • 이 코드는 현미경(microscope)으로 분석(analyze)한 샘플(sample)이 유기체(organic)인지 아닌지, organic이면 외계인인지 사람인지를 리턴하는 내용입니다.
  • 이 책은 '화성 탐사 작전'과 관련된 우주에 대한 내용을 담고 있습니다. 코드의 설정이 흐트러지는 것을 막아 코드 내 문제 해결에 집중을 하도록 하기 위함이라고 합니다.
  • 코드 중에 바뀔 부분과 바뀐 부분을 볼드체로 처리하여 변경 내용을 쉽게 확인할 수 있습니다.

 

이 책을 읽기 위해 필요한 스킬들

  1. 자바 기본 문법
  2. 조건문과 루프로 간단한 프로그램 제작 가능
  3. 객체 지향 프로그래밍의 기초
  4. 간단한 알고리즘 구현 가능
  5. 리스트나 큐, 스택, 맵 같은 기본적인 자료구조 사용 방법

 

저는 컴퓨터공학과 3학년 학생이고, 5번까지 다 배운 상태에서 이 책을 읽었습니다. 2학년 때 '문제해결 및 실습:JAVA', 3학년 때 자바로 리팩토링을 하는 수업인 '문제해결기법'을 들었었고, 아직 '객체 지향 프로그래밍' 수업은 듣지 않은 상태입니다. 개인적인 생각으로는 자바를 막 배우고 난 상태일 때 이 책을 읽었으면 딱 좋았을 것 같다고 생각했습니다.

 

리팩토링 수업 같은 경우에는 코드에 대해 고민할 일이 많았습니다. 이 코드는 이렇게 바꿀 수도 있고 저렇게 바꿀 수도 있는데, 왜 이렇게 하는 것보다 저렇게 하는 게 더 효율적인 방법이라는 거지? 이런 식의 고민 말입니다. 이 책이 고민을 하지 않게 만든다는 건 아닙니다. 이 책은 안내서처럼, 어떻게 해답을 도출해내야 하는지 친절하게 독자를 이끌어줍니다. 이 부분을 어떤 맥락에서 이렇게 만들었고, 이게 다른 코드보다 어떤 부분이 나은지, 아니면 경우에 따라 어떤 기준으로 판단하는지도 알려줍니다. 제가 읽었던 한 전공 서적과 같은 경우에는 왜 그런지 생각해보라고 질문만 던지고 (솔루션도 없고) 사라졌었는데, 이 책과 같은 경우에는 친구처럼 같이 고민하고 알아내는 기분이라 읽기 더 편했습니다.

 

 

인상 깊었던 점

  • 깃허브 예제 소스를 제공한다.
    • 기술 블로그를 하는 사람들은 공부하면서 TIL에 올릴 때 유용할 것 같습니다.
  • 메소드명이나 변수명 등으로 화성 탐사 작전과 관련된 단어가 꽤 나온다.
    • 모르는 게 나와서 자바 관련인가 하고 찾아보면 화성 관련 단어였습니다.
    • ex. hull.isIntact(), shouldAbortTakeOff
    • 검색해서 무슨 뜻인지만 알면 내용을 이해하는데는 불편함 없었습니다.
    • 오히려 책에 쓰여있듯이 cat, dog 같은 거면 매번 이해하기 더 번거로웠을 것 같습니다.
  • 말투가 세련됐다.
    • 쭉 읽었을 때 이해하기도 편하고, 다시 여러 번 돌아가서 읽지 않아도 됐습니다.
    • ex. 최적화할 여지가 아직 남았습니다. 예를 들어 두 번째 조건의 양 분기에서 grantAccess()를 동일한 인수로 호출하고 있네요. 두 조건을 별개의 비공개(private) 메서드로 추출할 수 있습니다. 이렇게 하면 코드의 목적이 훨씬 더 명확해지죠. 
  • 주석이나 JavaDoc을 유용히 쓰는 방법을 자세하게 알려준다.
    • 주석은 최대한 쓰지 않는게 낫다고는 했지만, 오히려 이런 주석이면 쓰는게 오히려 좋을 것이라 생각하기도 했습니다.
    • 이게 JavaDoc이라는 명칭이 있었다는 걸 처음 알았습니다. 책을 읽고 나중에 한 번 써보고 싶어졌습니다.
  • 명명 관련 규칙을 정리해 놓았다.
    • 개인적으로 가장 쉬우면서도 어려운 것이 명명이라고 생각합니다. 이 책에서는 그 규칙들을 사전처럼 찾아볼 수 있도록 한 챕터를 할애했습니다.
  • 정적 코드 분석 도구, 팀 내 자바 포맷 통일, 빌드 자동화, 콘솔 출력 대신 로깅 등 (내가 몰랐던) 실전에서 쓰이는 것들을 알려준다.
    • 팀프로젝트나 협업을 할 때 팀원들과 이 내용을 공유하면 유용하게 쓰일 것 같습니다.

 

이런 분들에게 추천합니다!

  • 이 책이 추천합니다! 기업에서 신입 사원에게 프로그래밍을 가르치는 선임 개발자

이 책에 따르면 주니어 개발자를 훈련시킬 때 유용할 것이라고 합니다. 코드에서 문제를 발견하면 이 책에서 해당하는 절을 알려줘서, 수습사원 스스로 간단한 예제와 함께 문제 해법에 도달하는 방법을 읽도록 하면 시간을 아낄 수 있을 것이라며 추천했습니다.

  • 제가 추천합니다! 자바 관련 팀플을 해야하는 학부생들

이 책을 읽으면서 지난 학기에 했던 프로젝트의 리팩토링이 잘못된 부분이 있었다는 걸 깨달았습니다. 수업 시간에 팀플을 해야하는 경우, 이 책을 교재 삼아 스터디를 진행하면 좋을 것 같다고 생각했습니다. 만약 제가 과거로 돌아가서 이 책을 알고 있었다면 반드시 했을 것이기 때문에 추천합니다. 정말 좋은 책이고, 이제라도 알게 되었으니 앞으로 블로그에 더 꼼꼼히 읽고 공부하는 글을 저도 쓸 것 같긴 합니다.

 

참고로 이 리뷰는 길벗 출판사에서 서적을 제공받아 작성되었습니다.

마지막으로 이 책에서 나왔던 (제 뼈를 때린) 명언을 인용하고, '자바 코딩의 기술' 추천드리며 마무리하겠습니다!

 

바보도 컴퓨터가 이해하는 코드는 작성할 수 있다. 
훌륭한 프로그래머는 인간이 이해하는 코드를 작성한다. (by. 마틴 파울러)

 

한 손으로 들고 다닐 수 있는 크기!

알라딘 도서 정보 링크

 

자바 코딩의 기술

코딩 스킬을 개선하는 가장 좋은 방법은 전문가의 코드를 읽는 것이다. 오픈 소스 코드를 읽으면서 이해하면 좋지만, 너무 방대하고 스스로 맥락을 찾는 게 어려울 수 있다. 그럴 땐 이 책처럼

www.aladin.co.kr

 

저작자표시 (새창열림)

'📚 서적 리뷰' 카테고리의 다른 글

플러터 앱 프로그래밍 : 실전 코드로 배우는 플러터 기본과 활용법  (0) 2021.10.19
신경망 교과서 리뷰 (프로젝트를 만들면서 배우는 신경망!)  (0) 2020.07.09
개발자의 디자인 독해력 - 디자이너와의 협업을 위하여!  (0) 2020.04.05

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 플러터 앱 프로그래밍 : 실전 코드로 배우는 플러터 기본과 활용법

    플러터 앱 프로그래밍 : 실전 코드로 배우는 플러터 기본과 활용법

    2021.10.19
  • 신경망 교과서 리뷰 (프로젝트를 만들면서 배우는 신경망!)

    신경망 교과서 리뷰 (프로젝트를 만들면서 배우는 신경망!)

    2020.07.09
  • 개발자의 디자인 독해력 - 디자이너와의 협업을 위하여!

    개발자의 디자인 독해력 - 디자이너와의 협업을 위하여!

    2020.04.05
다른 글 더 둘러보기

정보

컴01기 블로그의 첫 페이지로 이동

컴01기

  • 컴01기의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (87)
    • 📰논문 리뷰 (16)
    • 🍒회고록 (4)
    • 🖤네이버 ai tech (0)
    • ✨글쓰는힝 (1)
    • 🔥취준일기 (2)
    • 🎲유니티 (2)
    • 🔨삽질 (10)
    • 📚 서적 리뷰 (4)
    • 🐹알고리즘 (4)
    • 😎정리하는 카테고리 (4)
    • 📝CS 공부 (6)
      • 운영체제 (1)
      • 네트워크 (4)
      • 리팩토링 (1)
    • etc (22)
      • 혼공단 (7)
      • Spring (7)
      • JS (1)
      • OpenCV (2)
      • Unity (5)

최근 글

인기 글

댓글

태그

  • github
  • 혼공학습단
  • 혼공SQL
  • 백준
  • 회고록
  • 혼공머신
  • unity
  • 혼공단

나의 외부 링크

  • Github
  • Youtube

정보

힝님의 컴01기

컴01기

힝님

방문자

  • 전체 방문자
  • 오늘
  • 어제

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 힝님. Designed by Fraccino.

티스토리툴바