Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 3장. 함수
#clean_code
2년 전
335

2022.04.26~27

Today's Reading 3장. 함수

💡 오늘 TIL 3줄 요약

  • 함수는 한가지 일만 해야한다!

  • 위에서 아래로!

  • 인수는 2개 이하로!


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

  • 함수를 만드는 첫째 규칙은 ‘작게!’ 다. 이 규칙은 근거를 대기가 곤란하다. (경험상 그렇다는 말은 따라야지 😊 사실 읽을때 작은 단위일때가 보기가 편하긴 했다.)

  • if문/ else문/ while문에 들어가는 블록은 한줄이어야 한다는 뜻!?!?!!!

  • 함수의 들여쓰기 수준은 1단이나 2단을 넘어서면 안된다.

함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. - SRP(Single Responsibility Prinicple)

  • 함수 당 추상화 수준은 하나로

  • 위에서 아래로 코드 읽기: 내려가기 규칙

    • 한 함수 다음에 추상화 수준이 한 단계 낮은 함수가 옴

  • 함수 인수는 0개 > 1개 >> 2개>>> 3개>>>>>>>>4개 (인수가 많을수록 복잡해짐/ 테스트 관점에서도)

  • 많이 쓰는 단항 형식

    1. 질문을 던지는 경우 (Boolean)

    2. event - event 입력 인수로 시스템 상태를 바꿈

  • 플래그 함수는 추하다 - 한가지 이상의 일을 한다고 대놓고 말하는 셈

  • 함수 이름에 인수 이름을 넣으면 인수 순서를 기억할 필요가 없음

  • 부수효과를 일으키지 마라! - 한 가지만 하겠다고 약속하고 남몰래 다른 짓도 하는거

    • 함수로 넘어온 인수나 시스템 전역 변수를 수정함

    • temporal coupling - 시간적인 결합

    • order dependency - 순서 종속성 초래

  • 출력인수는 피해야 한다.

    • 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택하기

    appendFooter(s)
    report.appendFooter()
    
  • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.

    • 객체 상태를 변경하거나 객체 정보를 반환하거나 둘 중 하나

  • 오류코드 보다 예외 이용하기

    • 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해짐

    • try/ catch 블록을 사용하되 별도 함수로 뽑아내는 편이 좋다.

    • 오류 처리도 한가지 작업이니까 함수도 오류 처리 하는게 맞음


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

  • 부수효과를 줄여라, 부수효과에 대해 생각하라는 말을 자주 들었는데 도통 무슨 말인지 이해를 못했었다. 나름대로 부수효과가 생기면 멀티버스가 생긴다 라고 혼자 정의 내렸었는데 이번에 조금 제대로 이해를 한거 같다.

  • 무엇보다 지금 내가 짜는 코드는 함수가 너무 많은 일을 하고 있다. 한가지 일만 하도록 수정해봐야겠다.

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

  • switch문에 관련해서 잘 이해를 못했다. (p47)

💬 오늘 읽은 다른사람의 TIL