[ 클린코드 매일 읽기 ] TIL 3장. 함수

원장·2024년 1월 29일
1

클린코드

목록 보기
4/10
post-custom-banner

3줄 요약

  • 함수는 무조건 작게 만들어야 한다. 한 가지만 하도록.
  • 나도 모르게 함수 안에 여러 개의 return을 쓴다던지, 여러가지 일을 시킨다던지 더럽게 쓰고있었다..
  • 코딩은 결국 글쓰기랑 똑같다는 생각이 든다.

오늘 읽은 범위

3장 함수

책에서 기억하고싶은 내용

  • 함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다.[42]
  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.[44]
  • Single Responsibility Principle- 하나의 클래스는 하나의 일만 해야한다.[47]
  • Open Closed Principle-기존의 코드를 변경하지 않아도 확장 가능해야한다.[48]
  • 이름이 길어도 괜찮다. 겁먹을 필요없다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다.[49]
  • 플래그 인수는 추하다. 함수로 부울 값을 넘기는 관례는 정말 끔찍하다.[52]
  • 부수효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까.[54]
  • 이런 부수 효과가 시간적인 결합을 초래한다. 즉, checkPassword 함수는 특정 상황에서만 호출이 가능하다. 다시 말해, 세션을 초기화해도 괜찮은 경우에만 호출이 가능하다.[55]
  • 중복은 소프트웨어에서 모든 악의 근원이다.[60]
  • 함수는 return 문이 하나여야 한다는 말이다. 루프 안에서 break나 continue를 사용해선 안되며 goto는 절대로, 절대로 안된다.[61]
  • 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. 논문이나 기사를 작성할 때는 먼저 생각을 기록한 후 읽기 좋게 다듬는다. 초안은 대개 서투르고 어수선하므로 원하는 대로 읽힐 때까지 말을 다듬고 문장을 고치고 문단을 정리한다.[61]
  • 진짜 목표는 시스템이라는 이야기를 풀어가는 데 있다는 사실을 명심하기 바란다.[62]

읽은 소감과 떠오르는 생각

  • 시작하자마자 40p에서 42p까지 가면서 함수를 축약하는 내용을 보여주는데 많이 와닿았다. 길어서 이해되지않던게 바로 어떤 의미인지 이해가 됐다.
  • 45페이지까지 읽은 순간 함수는 아래와 같이 표현하면 될 것 같다.
const 함수 = () => {
	심장이_뜀()
    밥을_먹기_위해_움직임()
    음식물을_필터링함()
    분해_후_흡수함()
    뇌로_생각을_함()
    ...
}

이라는 과정을

const 함수 = () => {
	생존()
}

으로 줄이는 것
  • 함수에서 인수는 없을 수록 좋다고 한다. 다음에 함수를 짤 때는 인수를 적게 가져간다고 생각하고 짜야할듯하다.
  • 플래그도 인수에 넣지 말아야하는구나.. 가끔 넣었던 것 같은데 그러지 말아야겠다.
  • 함수 이름에 인수명을 포함하는거.. 인수 순서를 따로 기억에 의존하지 않기 위해 쓰라고한다.
  • checkPassword라는 곳에서 무조건 세션을 초기화한다는게 의도하지 않는 경우 불필요한 작업일 수 있으니 이런 부수효과를 일으키는 애들은 명칭에 세션도 초기화한다는 말을 쓰거나 세션초기화함수를 따로 빼야할듯하다.
  • 이전에는 함수에 출력 인수를 넣고 빼고 생각을 거치지 않고 만들었는데, 앞으로는 생각해야겠다. 지금까지는 운좋아서 이렇게 안만들었던거니까.
  • 명령과 조회의 분리도 처음부터 REST API부터 만들기 시작해서 당연하게 만들었던 것 같은데, 다시 한 번 생각했다. 분리해야한다는 것을.
  • 오류 처리도 하나로 퉁치치말고 개별적으로 어떤 오류가 생기는 지 분류해줘야겠다. <= 매우 중요함 ㄹㅇ...
  • 종종 함수 안에 if를 써서 return이 같은 함수 내에서 2개 이상이 되기도 했었는데 여기선 하지 말라고 한다. 다음에 코드 짤 때 이 부분 참고합시다.
  • 코딩도 결국 글쓰기구나...

궁금한 내용이나 잘 이해되지 않는 내용

  • 없다.
profile
나 원장이 아니다
post-custom-banner

0개의 댓글