Reading Book

    2장. 복잡한 이야기도 쉽게 풀어내는 설명의 공식

    2장. 복잡한 이야기도 쉽게 풀어내는 설명의 공식

    2장에서는 훌륭한 설명의 기본 구조를 소개하고 설명의 구성 방식을 제시한다. 이 구성만 익혀도 설명력은 향상된다고 설명하고 있다. 능숙한 설명의 기본 구조 먼저 한마디로 말하면 OO 입니다. →본질을 요약해 한마디로 표현한다. 이를 위해 인상적인 문구를 만든다. 핵심은 OO 입니다. →핵심은 최대 세 가지로 요약한다. 중요도나 상대가 원하는 우선순위를 반영하여 제시한다. 구체적으로 말하면 OO 입니다. →예시, 에피소드, 자신의 체험 등으로 보충한다. 정리하면 OO 입니다. →지금까지 설명한 내용을 최종적으로 정리한다. 책을 활용한 요약 능력 트레이닝 A4 용지에 먼저 책의 제목을 적는다. 책을 읽어가면서 삼색 볼펜으로 중요한 부분에 밑줄을 긋는다. (중요한 문구 뿐만 아니라 숫자에도 특히 주의한다. 숫..

    1장. 좋은 설명은 1분이면 충분하다.

    1장. 좋은 설명은 1분이면 충분하다.

    1장에서는 1분 설명력이란 어떤 능력이며 어떤 기술이 필요한지를 이야기 한다. 설명을 잘하는 사람을 만나면 왜 똑 부러지는 사람이라고 느끼는지 밝히고, 설명을 잘한다는 것은 어떤 의미인지 설명한다. 설명에 필요한 3가지 능력 - 시간 감각 / 요약 능력 / 예시 능력 1.설명을 잘하는 사람은 주위 사람의 인생을 낭비하지 않고 행복하게 한다. (시간 감각) 설명이 서툴면 주위 사람은 계속해서 시간을 빼앗긴다. 반대로 설명을 잘하면, 정보가 효율적으로 전달되므로 주위 사람의 시간도 절약해주는 셈이다. 따라서 기본적으로 설명력과 시간 감각을 세트로 의식해야 한다. 2.설명력에서 지성을 엿볼수 있다. (요약 능력) 머리가 좋다고 인정하는 몇 가지 핵심 중에 많은 사람이 척도로 삼는 것 중 하나가 바로 이해력이다..

    [Clean Code]클린코드_10_클래스

    [ 클래스 체계 ] 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나오낟. 정적 공개 (static public) 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개(private) 변수가 나오며, 이어 비공개 인스턴스 변수가 나온다. 공개 변수가 필요한 경우는 거의 없다. 변수 목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉 , 추상화 단계가 순차적으로 내려간다. 그래서 프로그램은 신문기사 처럼 읽힌다. -캡슐화 변수와 유틸리티 함수는 가능한 공개하지 않는 편이 낫지만 반드시 숨겨야 한다는 법칙도 없다. 때로는 변수나 유틸리니 함수를 protected로 선언해 테스트 코드에 접근을 허용하기도 한다. 우리에게 테스트는 아주 중요하다..

    [Clean Code]클린코드_9_단위 테스트

    [ TDD 법칙 세 가지 ] 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 않으면서 실행히 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. [ 깨끗한 테스트 코드 유지하기 ] 실제 코드가 진화하면 테스트 코드도 변해야 한다. 그런데 테스트 코드가 지저분할 수록 변경이 어려워진다. 실제 코드를 변경해 기존 테스트 케이스가 실패하기 시작하면, 지저분한 코드로 인해, 실패하는 테스트 케이스를 점점 더 통과시키기 어려워진다. 그래서 테스트 코드는 계속해서 늘어가는 부담이 되어버린다. 테스트 코드는 실제 코드 못지 않게 중요하다. 테스트 코드는 이류 시민이 아니다. 테스트 코드는 ..

    [Clean Code]클린코드_8_경계

    시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 떄로는 오픈 소스를 이용한다. 때로는 사내 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 외부 코드를 우리 코드에 깔끔하게 통합해야한다. 이때 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교가 있어야한다. [ 경계 살피고 익히기 ] 외부 코드를 사용하면 적은 시간에 더 많은 기능을 출시하기 쉬워진다. 하지만 외부 코드를 익히기는 어렵다. 외부 코드를 통합하기도 어렵다. 두 가지를 동시에 하기는 더 어렵다. 다르게 접근하여 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까? 짐 뉴커크(Jim Newkirk)는 이를 학습 테스트 라 부른다. 학..

    [Clean Code]클린코드_7_오류 처리

    깨끗한 코드와 오류 처리는 연관성이 있다. 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. 여기서 좌우된다는 표현은 코드 기반이 오류만 처리한다는 의미가 아니다. 여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 거의 불가능하다는 의미다. [ 오류 코드보다 예외를 사용해라 ] 앞서 오류 코드보다 예외를 사용했을 때 더 깨끗한 코드가 됨을 설명했다. [ Try-Catch-Finally 문부터 작성해라 ] 예외에서 프로그램 안에다 범위를 정의한다는 사실은 매우 흥미롭다. try-catch-finally문에서 try블록에 들어가는 코드를 실행하면 어느 시점에서든 실행이 중단된 후 catch 블록으로 넘어갈 수 있다. 어떤 면에서 try 블록은 트랜잭션과 비슷하다. try 블록에..

    [Clean Code]클린코드_6_객체와 자료 구조

    변수를 비공개(private)로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서 이다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회(get)함수와 설정(set)함수를 당연하게 공개(public)해 비공개 변수를 외부에 노출할까? [ 자료 추상화 ] 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. // 구체적인 Point 클래스 public class Point { public double x; public double y; } // 추상적인 Point 클래스 public interface Point { double getX(); double getY(); void s..

    [Clean Code]클린코드_5_형식 맞추기

    프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고, 그 규칙을 착실히 따라야한다. 팀으로 일한다면, 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야한다.필요하면 규칙을 자동으로 적용하는 도구를 활용한다. [ 적절한 행 길이를 유지해라 ] 큰 파일보다는 작은 파일이 이해하기 쉬우므로 적절한 행 길이를 유지해야 한다. -신문기사 처럼 작성해야 한다. 신문을 읽을 때 최상단에 기사를 몇 마디로 요약하는 표제가 나온다. 마찬 가지로 이름은 간단하면서도 설명이 가능하게 지어야하고 아래로 내려갈수록 의도를 세세하게 묘사하여야한다. -개념은 빈 행으로 분리해라. 일련의 행 묶음은 완결된 생각 하나를 표현한다. 생각 사이에는 빈 행을 넣어 분리해야 한다. 예를 들어..