Skip to content

Latest commit

 

History

History
125 lines (75 loc) · 3.67 KB

The_Art_of_Readable_Code.md

File metadata and controls

125 lines (75 loc) · 3.67 KB

읽기 좋은 코드가 좋은 코드다

책소개 이미지

  • 2018년에 NHN 채용설명회에 갔다가 받은 책!

  • 이 책을 관통하는 핵심 아이디어는, 코드는 이해하기 쉬워야 한다는 것

  • 자신의 코드를 다른 사람이 읽고 이해할 때 걸리는 시간을 최소로 만들어야 한다.


목차

  1. 코드는 이해하기 쉬워야 한다

    • 메시지 발행과 구독하기
    • 카프카 살펴보기
    • 카프카를 사용하는 이유
  2. 표면적 수준에서의 개선

    • 이름에 정보 담기
    • 오해할 수 없는 이름들
    • 미학
    • 주석에 담아야 하는 대상
    • 명확하고 간결한 주석 달기
  3. 루프와 논리를 단순화하기

    • 읽기 쉽게 흐름제어 만들기
    • 거대한 표현을 잘게 쪼개기
    • 변수와 가독성
  4. 코드 재작성하기

    • 상관없는 하위문제 추출하기
    • 한 번에 하나씩
    • 생각을 코드로 만들기
    • 코드 분량 줄이기
  5. 선택된 주제들

    • 테스트와 가독성
    • 분/시간 카운터를 설계하고 구현하기
    • 추가적인 도서목록


1. 코드는 이해하기 쉬워야 한다.

  • 가독성의 기본 정리
    • 코드는 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화하는 방식으로 작성되어야 한다.
    • 분량이 적다고 해서 항상 좋은 것은 아니다


2. 표면적 수준에서의 개선

1) 표면적 수준

  • 좋은 이름을 짓고, 좋은 설명을 달고, 코드를 보기 좋게 정렬하는 것들

  • 이러한 수정은 반영하기 쉽고, 많은 시간을 투자할 필요가 없다.

2) 이름에 정보 담기

  • 특정한 단어 고르기 : 매우 구체적인 단어를 선택해 무의미한 단어 피하기!

    def getPage(url): 	// 어디서 가져오는건지 명확하지 않음
    
    class BinaryTree {
        int size();		// 무엇을 반환하는 건지 알 수 없음
    }
    
    class Thread {
        void Stop();	// 정확히 무엇을 수행하는지 알 수 없음
    }
  • 더 화려한 단어 고르기 : 상황에 더 적합할 수 있는 단어를 고르자

    단어 대안
    send deliver, dispatch, announce, distribute, route
    find search, extract, locate, recover
    start launch, create, begin, open
    make create, setUp, build, generate, compose, add, new
    • 화려한 단어가 꼭 좋은 것만은 아님에 주의하자
  • 보편적인 이름 피하기 : tmp, retval, foo 같은 이름들 말고... 개체의 값이나 목적을 정확하게 설명하자

    • 보편적인 이름을 사용하려면, 꼭 그렇게 해야 하는 이유가 있어야 한다
  • 추가적인 정보를 이름에 포함하기 : 단위/중요한 속성 등의 정보를 포함시키자

  • 이름이 지나치게 길면 안된다!

    • newNavigationControllerWrappingViewControllerForDataSourceOfClass
    • 보기만 해도 기억하기 어렵고... 화면도 너무 많이 차지함...
    • 좁은 범위에서는 짧은 이름이 괜찮다 : 좁은 범위면 많은 정보를 담을 필요가 없다.

3) 오해할 수 없는 이름들