\(@^0^@)/

[BOOK] 클린코드, 3장 함수 본문

BOOKS/클린 코드

[BOOK] 클린코드, 3장 함수

minjuuu 2022. 3. 3. 17:04
728x90

프리온보딩 코스를 하는 동안 너무 바빠서 노개북을 참여하지 못하고 한달이 넘는 시간이 지났다ㅠ
지금이라도 진짜 꾸준히 해보자!


오늘 읽은 범위 : 3장. 함수 (p. 40 ~)

< 책에서 기억하고 싶은 내용 >

  • 어떤 프로그램이든 가장 기본적인 단위가 함수다.
  • 작게 만들어라!
  • if 문/ else 문/ while 문 등에 들어가는 블록은 한 줄이어야 한다.
    • 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 뜻.
    • 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다.
  • 한 가지만 해라!
    • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
  • 함수 당 추상화 수준은 하나로!
    • 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다.
  • 코드는 위에서 아래로 이야기처럼 읽혀야 좋다.
  • 서술적인 이름을 사용하라!
    • 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 그것이 '클린 코드'
    • 함수가 작고 단순할수록 서술적인 이름을 고르기도 쉬워진다.
    • 이름이 길어도 괜찮다, 길고 서술적인 이름이 짧고 어려운 이름보다 좋다.
    • 길고 서술적인 이름이 길고 서술적인 주석보다 좋다.
    • 이름을 붙일 때는 일관성이 있어야 한다. 모듈 내에서 함수 이름은 같은 문구, 명사, 동사를 사용한다.
  • 함수에서 이상적인 인수 개수는 0개 (무항)다.
    • 3개 (삼항)는 가능한 피하는 편이 좋다.
    • 4개 이상 (다항)은 특별한 이유가 필요하다.
    • 인수가 2-3개 필요하다면 일부를 독자적인 변수로 선언할 가능성을 짚어본다.
    • 단항 함수는 함수와 인수가 동사/ 명사 쌍을 이뤄야 한다.
      (ex. writeField(name)이 write(name)보다 낫다. assertExpectedEqualsActual(expected, actual)이 assertEquals보다 낫다.)
  • 부수 효과를 일으키지 마라!
  • 명령과 조회를 분리하라!
    • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
  • 오류 코드보다 예외를 사용하라!
    • 정상 동작과 오류 처리 동작을 분리하면 코드를 이해하고 수정하기 쉬워진다.
    • 오류 처리도 한 가지 작업. (함수는 '한 가지' 작업만 해야 한다.)
  • 반복하지 마라!


< 오늘 읽은 소감? 떠오르는 생각을 가볍게 적어보기 >

  • 처음부터 완벽한 코드를 구현할 생각 하지 말고 코드를 다듬고, 함수를 만들고,
    이름을 바꾸고, 중복을 제거하고, 메서드를 줄이고, 순서를 바꾸고, 컴포넌트를 쪼개면서 리팩하자!
  • 아직도 프로젝트 하면서 함수, 상수 이름 짓는게 너무나도 어렵다.. 영어로 지어야해서 더더욱 어렵기도 하다.
    서술적인 이름을 사용하는 연습을 꾸준히 해보자. 다른 걸 구현하기 바빠서 이름 짓는거에 별로 시간을 들이면 안된다는 생각을 많이 했었는데, 한줄을 적어도 많은 생각을 하고 적어야 한다는 것을 요즘 들어 체감한다.
    그래야 나중에 리팩토링 할 것도 줄어들기 때문에! 조금 느려도 차근차근 신중하게 생각하며 코딩해보자.
  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다


[ 출처 : 클린 코드 ]

728x90