Community

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

← Go back
day5. TIL(함수)
#clean_code
2년 전
373

오늘 TIL 3줄 요약

  • 함수는 한가지만, 작게

  • 명령과 조회를 분리하자

  • 오류코드 보다 예외를 사용하자

TIL (Today I Learned) 날짜

2022. 04.26~4.27

오늘 읽은 범위

3장. 함수

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

  • 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야한다.(p.44)

  • 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.(p.45)
    함수가 한가지 일만 하는지 판단하기 위한 방법은 추상화 수준을 확인하는 것이다. 예를 들어 어떤 함수가 아래와 같은 단계를 처리한다고 가정해보자.
    1. 페이지가 테스트 페이지인지 판단한다.
    2. 그렇다면 설정 페이지와 해제 페이지를 넣는다.
    3. 페이지를 HTML로 렌더링한다.
    이때 이 함수가 3가지 일을 한다고 판단하는 것이 아니라, 추상화 수준으로 해석해봐야 한다.
    '이 함수는 페이지가 테스트 페이지인지 확인한 후, 테스트 페이지라면 설정 페이지와 해제 페이지를 넣는다. 테스트 페이지든 아니든 페이지를 HTML로 렌더링한다.' 라고 해석하면 추상화 수준에서 한 가지 작업만 한다고 볼 수 있다. 즉, 테스트 페이지라면 설정 페이지와 해제 페이지를 넣어 HTML로 렌더링 해주는 일이다.

  • 명령과 조회를 분리하라! 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. 객체 상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나다. 둘 다 하면 혼란을 초래한다.(p.56)

  • 오류 코드보다 예외를 사용하라!오류 코드를 반환하면 호출자는 오류 코드를 곧바로 처리해야 한다는 문제에 부딪힌다. 반면 오류 코드 대신 예외를 사용하면 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해진다.(p.57-58)

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

  • 함수는 작게 만드는게 좋다. 2~4줄 정도로 아주 짧으면 좋고, 중첩 구조가 생길만큼 커지면 안된다고 했다. 그동안 짰던 함수의 코드를 생각해보면 4줄 이상은 되었는데.. 문득 함수가 1가지 외의 일을 하여 코드가 많이 길어져서 가독성이 떨어졌던 코드도 생각난다. 함수를 잘 짜기 위해서는 바로 코드로 옮기는 것이 아니라 1)먼저 어떤 작업을 해야 하는지 단계를 글로 작성해 본 뒤 2)중복되는 부분은 없애고 읽기 쉬운 코드로 다듬어야 한다. 그리고 이름은 서술형으로 작성하여 함수가 하는 일을 좀 더 잘 표현되도록 이름에 더 신경써야 겠다는 생각이 들었다. 함수를 공부한 김에 생각나는 함수 코드를 리팩토링 해봐야겠다.