[노개북] 클린코드 TIL (2022.01.26 ~ 2022.01.27)

janjanee·2022년 8월 1일
0
post-thumbnail

TIL (2022.01.26 ~ 2022.01.27)

DAY 6~7

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


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

  • 함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다. (p.42)
  • 각 함수가 이야기 하나를 표현했다. 각 함수가 너무도 멋지게 다음 무대를 준비했다. (p.43)
  • 블록과 들여쓰기 (p.43)
    • if/else/while 문 등에 들어가는 블록은 한 줄이어야 한다는 의미이다.
    • 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 지으면,
      코드를 이해하기도 쉬워진다.
    • 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다.
  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. (p.44)
  • 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. (p.45)
  • 의미있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다. (p.45)
  • 함수가 확실히 ‘한 가지’ 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. (p.45)
  • 위에서 아래로 코드 읽기: 내려가기 규칙 (p.46)
    • 코드는 위에서 아래로 이야기처럼 읽혀야 좋다.
    • 위에서 아래로 TO 문단을 읽어내려 가듯이 코드를 구현하면 추상화 수준을 일관되게 유지하기가 쉬워진다.
  • 일반적으로 나는 switch 문을 단 한 번만 참아준다. 다형적 객체를 생성하는 코드 안에서다. (p.49)
  • 서술적인 이름을 사용하라! (p.49)
    • 서술적인 이름을 사용하면 개발자 머릿속에서도 설계가 뚜렷해지므로 코드를 개선하기 쉬워진다.
    • 이름을 붙일 때는 일관성이 있어야 한다.
  • 함수 인수 (p.50)
    • 함수에서 이상적인 인수 개수는 0개(무항)다.
    • 다음은 1개(단항)고, 다음은 2개(이항)다.
    • 3개(삼항)은 가능한 피하는 편이 좋다.
    • 4개 이상(다항)은 특별한 이유가 필요하다. 특별한 이유가 있어도 사용하면 안 된다.
  • 플래그 인수 (p.52)
    • 플래그 인수는 추하다.
    • 함수가 한꺼번에 여러 가지를 처리한다고 대놓고 공표하는 셈!
  • 어떤 코드든 절대로 무시하면 안되니까. 무시한 코드에 오류가 숨어드니까. (p.52)
  • 객체를 생성해 인수를 줄이는 방법이 눈속임이라 여겨질지 모르지만 그렇지 않다.
    변수를 묶어 넘기려면 이름을 붙여야 하므로 결국은 개념을 표현하게 된다. (p.53)
  • 부수 효과를 일으키지 마라! (p.54)
    • 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까.
  • 일반적으로 출력 인수는 피해야 한다. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를
    변경하는 방식을 택한다. (p.56)
  • 오류 코드보다 예외를 사용하라! (p.57)
  • try/catch 블록을 별도 함수로 뽑아내는 편이 좋다. (p.58)
    • 함수에 키워드 try가 있다면 함수는 try 문으로 시작해 catch/finally 문으로 끝나야 한다.
  • 반복하지 마라! (p.60)

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

  • 함수를 최대한 잘게 쪼개고 서술적인 이름을 사용하려고 노력하는 중이어서 읽으면서 뿌듯했다.
  • 서비스 레이어 로직을 짤 때 인수를 최대한 줄이는 방법이 무엇인지 고민해봐야겠다.
    • writeField 메서드를 outputStream 클래스 구성원으로 만든다. outputStream.writeField(name)
    • outputStream을 현재 클래스 구성원 변수로 만들어 인수로 넘기지 않는다.
    • FieldWriter라는 새 클래스를 만들어 구성자에서 outputStream을 받고 write 메소드를 구현
  • [목록 3-3은 한 가지만 하는가? 아니면 세 가지를 하는가? 세 단계는 지정된 함수 이름 아래에서 추상화
    수준이 하나다. (p.45)] 함수를 쪼개고 나서도 항상 이런 생각을 했었는데 읽고서 마음이 편안해졌다.
  • 함수를 작성하는 좋은 방법들을 익혔다. 중요한 건 적용과 반복!

기록하신 TIL을 공유해주세요 - TIL 출석표

클린코드_스케쥴러_TIL 출석표 (노개북1기)

소감 3줄 요약

  • 서비스 레이어 로직을 짤 때 인수를 최대한 줄이는 방법이 무엇인지 고민해봐야겠다.
  • 함수를 최대한 잘게 쪼개고 서술적인 이름을 사용하려고 노력하는 중이어서 읽으면서 뿌듯했다.
  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
profile
얍얍 개발 펀치

0개의 댓글