[수정중][Clean Code] TIL(2022.02.24) 3장. 함수

다시보려고 쓰기·2022년 2월 23일

클린코드 (Clean Code)

목록 보기
5/10

TIL (Today I Learned)

2022.02.24

오늘 읽은 범위

3장 함수


😃 책에서 기억하고 싶은 내용을 써보세요.

  • 작게 만들어라 (p.42)
    - 작은 함수가 좋다.

    • 블록과 들여쓰기
      if/ else/ while 문 등에 들어가는 블록은 한 줄이 좋다. 중첩구조가 생길만큼 함수가 커져서는 안된다.

  • 한 가지만 해라! (p.44)
    - 함수는 한 가지를 잘 해야한다. 그 한가지만을 해야한다.

    • 우리가 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서가 아니던가 (p.45)
    • 함수가 '한 가지'만 하는지 판단하는 방법 : 의미있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는셈!

  • 추상화 수준은 하나로! (p.45)
    - 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. 근본개념과 세부사항을 뒤섞기 시작하면, 깨어진 창문처럼 사람들이 함수에 세부사항을 점점 더 추가한다.

    • 위에서 아래로 코드 읽기 : 내려가기 규칙
      코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다. ->즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 이것이 내려가기 규칙!

  • Switch 문
    - 다형성 (Polymorphism)이용

    • Switch 문을 추상팩토리 (Abstract Factory)에 숨긴다.
    • 상속관계로 숨긴 후 다른 코드에 노출하지 않는다 (p.48-49)

  • 서술적인 이름을 사용해라 (p.49)
    - 좋은 이름이 주는 가치는 아무리 강조해도 지나치지 않는다.

    • 함수가 작고 단순할 수록 서술적인 이름을 고르기도 쉬워진다.
    • 길고 서술적인 이름이 짧고 어려운 이름보다 낫다.
    • 서술적인 이름 사용의 이유 : 개발자 머릿속에서도 설계가 뚜렷해지므로 코드를 개선하기 쉬워진다.

  • 함수 인수 (p.50)
    - 함수 이상적인 인수 개수는 0(무항)개이다. 다음은 1(단항)개, 2(이항)개, 3개는 피하는 것이 좋가..4개 이상(다항)은 사용하지 말 것

    • 많이 쓰는 다항형식
      - 함수에 인수 1개를 넘기는 이유
      	1. 인수에 질문을 던지는 경우
          2. 인수를 뭔가로 변환해 결과를 반환하는 경우 
      - 단항 함수 형식
      	이벤트 : 이벤트 함수는 입력 인수만 있다. 
      이런 경우가 아니라면 단항 함수는 가급적 피한다.
    • 플래그 인수

    • 이항 함수

    • 삼항 함수

    • 인수 객체

    • 인수 목록

      -----------여기서부터는 추가 정리중 -----------


  • 부수 효과는 일으키지 마라!(p.54)

  • 명령과 조회를 분리하라!(p.56)

  • 오류코드보다 예외를 사용하라! (p.57)
    -
    • Try Catch 블록 뽑아내기
    • 오류 처리도 한 가지 작업이다.

  • 반복하지 마라! (p.60)

  • 구조적 프로그래밍 (p.61)

  • 함수를 어떻게 짜죠? (p.61)
    == 글짓기 초안은 대개 서투르고 어수선하지만 원하는대로 읽힐 때까지 다듬고 고치고 정리한다.

  • 결론 (p.62)

🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • Switch 문에 대한 설명, 특히 상속관계로 숨긴 후 다른 코드에 노출하지 않는다 (p.48-49) 이 부분은 잘 와닿지가 않아서 코드를 보면서 좀 더 이해가 필요하다.
  • 어려운 함수의 세계...

🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

SRI (Single Resonpsibility Principle)
OCP (Open Closed Principle) <- 앞서 정리한 내용인데 기억이 나지 않는다.
AOP (Aspect Oriented Programming)
COP (Component Oriented Programming)
단일 입/출구 규칙 (Single entry)

0개의 댓글