(클린코드) 3장. 함수

Posted by Eun JongHyeok on January 21, 2025

오늘 TIL 3줄 요약

  • 함수는 한 가지만 수행해야 합니다.
  • 함수 내 코드는 같은 추상화 수준을 사용해야 합니다.
  • 중복을 제거해야합니다.

TIL (Today I Learned) 날짜

  • 2025.01.20 - 2025.01.22

오늘 읽은 범위

  • 3장. 함수

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

함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다.

  • 20 줄을 넘어가지 않게, if/else, while 문 등이 들어가는 블록은 한 줄이여야 합니다.

함수는 한 가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

  • 한 가지라는건 함수가 한가지 추상화 수준을 실행해야 한다는걸 말합니다.

  • 함수가 한 가지 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일 해야 합니다.

  • 내려가기 규칙 : 한 함수 다음에는 추상화 수준이 한 단계 더 낮은 함수가 와야합니다.

  • Switch 문을 숨기는 방법

    • Switch 문은 어쩔 수 없이 N 가지 일을 수행합니다.

    • polymorphism을 이용해 저차원 클래스에 숨기고 다형적 객체를 생성하는 방식으로 변경하여 최대한 외부에 노출이 안되게 할 수 있습니다.

  • 함수 이름은 길고 서술적인게 짧고 어려운 이름보다 좋습니다. 또한 일관성을 유지 해야합니다.

함수에서 이상적인 인수 개수는 0개(무항)다.

  • 함수의 인수는 적으면 적을 수록 좋습니다.

  • 단항 함수를 사용하는 케이스는 인수에 질문을 던지거나 인수를 다른 걸로 변환하거나 할 때 사용할 수 있습니다.

    • 드물게 이벤트 함수를 사용하는데 이때는 이벤트라는걸 명확히 알려야합니다.
1
2
3
// 단항 형식
boolean fileExists("MyFile")
InputStream fileOpen("MyFile")
  • 이항 함수를 사용하는 케이스에는 assertEquals(experted, actual) 같은 경우가 있습니다.

  • 인수를 줄이기 위해 인수 일부를 클래스 변수로 선언하는 방법도 있습니다.

부수 효과를 일으키지 마라!

  • 함수가 한가지 일만 하는 것처럼 이름을 지어놓고 안에서는 추가적으로 다른 일을 하는 경우 시간적인 겹합이나 순서 종속성을 초래하게 됩니다.

  • 일반적으로 출력 인수 사용은 지양해야합니다.

오류 코드보다 예외 코드를 사용하라!

1
if (deletePage(page) == E_OK)
  • 위 명령 함수에서 오류코드를 반환할 경우 오류 코드를 바로 처리해야한다는 문제를 주고 명령 + 질문을 수행합니다.

  • 위에서 deletePage(page)가 예외를 내뱉는 방식으로 변경할 수 있습니다.

  • Try/Catch 구문은 정상 동작과 오류 동작 처리를 하게됩니다. 각 블록을 함수로 뽑아쓰는게 좋습니다.

  • 오류 코드를 사용하면 오류 코드가 변경 될때 마다 Error Enum을 사용하는 클래스에 재컴파일/재배치가 일어나게 됩니다. Exception은 재컴파일/재배치가 없이 추가할 수 있습니다.

DRY(Don’t Repeat Yourself) 원칙

  • 중복을 코드 길이가 늘어나게 할 뿐 아니라 오류 발생확률도 올립니다.

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

  • 결국에는 함수는 한가지 일만을 수행해라로 요약되는거 같네요.

  • 오류 코드보다 예외 코드를 사용하라! 이 부분이 실무에서 예외를 거의 사용하지 않았기 때문에 어렵게 느껴집니다.

  • 이 모든걸 다 지키는게 쉽지 않을거 같습니다😱

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

오늘 읽은 다른사람의 TIL


nomadcoder
study
노마드코더
노개북
개발자북클럽

← Previous Post Next Post