Community

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

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

오늘 TIL 3줄 요약

  • 함수를 만드는 첫째 규칙은 '작게'다. 함수를 만드는 둘째 규칙은 '더 작게'다.

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

  • 이름이 길어도 괜찮다. 길고 서술적인 이름을 사용하자

TIL (Today I Learned) 날짜

2022. 04. 26 ~ 27

오늘 읽은 범위

3장. 함수

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

  • 함수에서 이상적인 인수 개수는 0개다. 다음은 1개고 다음은 2개다. 4개 이상은 특별한 이유가 필요하다.

  • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야한다. 객체 상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나다.

    • if( set("username", "unclebob"))...

      if (attributeExists("username")){


      setAttribute("username", "unclebob");


      ...
      }

  • 오류 처리도 한 가지 작업이다. 함수에 키워드가 try가 있다면 함수는 try 문으로 시작해 catch/Finally 문으로 끝나야 한다는 말이다.

  • 함수는 return 문이 하나여야 한다. 루프 안에서 break나 continue를 사용해선 안 된다.

  • 함수는 글짓기와 비슷하다. 처음에는 길고 복잡하다. 들여쓰기 단계도 많고 중복된 루프도 많다. 인수 목록도 아주 길다. 이름은 즉흥적이고 코드는 중복된다. 하지만 나는 그 서투른 코드를 빠짐없이 테스트 하는 단위 테스트 케이스도 만든다.


    그런 다음 나는 코드를 다듬고, 함수를 만들고, 이름을 바꾸고, 중복을 제거한다. 메서드를 줄이고 순서를 바꾼다. 때로는 전체 클래스를 쪼개기도 한다. 이 와중에 코드는 항상 단위 테스트를 통과한다.

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

  • "함수에서 이상적인 인수 개수는 0개이다."라는 문장을 봤을 때 너무 찔렸다. 바로 저번주만 해도 레거시 코드를 수정할 때 인수를 3개나 쓰게 하는 함수를 만들었는데...흑흑.. 레거시 코드를 리팩토링 했지만 레거시 코드를 또 만든 셈이다. (무한 반복..)


    코드를 커밋하기 전에 마지막으로 살펴봤을 때는 인수를 3개나 쓴 것에 대해 확실히 걱정이 되긴 했었다. 주석을 보지 않으면 인자가 어떤 타입인지 일일이 확인해야 되기 때문에 함수를 해석하는데 오래 걸리기 때문이다. 여러 인자를 받아야 하는 상황이 된다면 object 타입으로 히나 받게 하는 것이 낫겠다는 생각이 든다. object key값을 보고 바로 이해가 될 수 있기 때문이다. 함수 만들 때 인자를 적게 만들자!

  • 오늘 함수를 만드는 여러 예시 코드를 봤는데 javascript나 typescript로 해당 예시를 바꿔서 구현해보고 싶다. 프론트 개발자들에게 많은 도움이 되지 않을까 싶다.

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

  • 객체 지향 프로그래밍은 코드를 부모 클래스로 몰아 중복을 없앤다. 구조적 프로그래밍, AOP, COP 모두 어떤 면에서 중복 제거 전략이다.
    -> 부모 클래스로 몰아 중복을 없앤다? 전역으로 사용해서 중복 사용을 줄인다는 얘기인 걸까?

오늘 읽은 다른사람의 TIL