책/CleanCode

3장 함수

kkkkkdddddhhhhh 2023. 12. 8. 23:42

함수는 작게 만들자

  • 블록과 들여 쓰기
    • if문, else문, while문 등이 들어가는 블럭은 한 줄이어야 한다.
    • 함수안에서 여러가지 작은함수들을 호출한다면 호출된 함수명들을 통해 함수를 이해하기 쉬워진다.
  • 중첩 구조가 생길만큼 함수가 커져서는 안된다.

한가지만 하자

  • 한 가지 목적을 잘 처리하는 함수를 만들자
  • 여러 목적을 가진 함수를 읽는것은 그 함수의 의도를 파악하기 어려워진다.
  • 함수가 한가지 로직만 처리하는지 알 수 있는 방법
    • 함수 코드중 어떠한 의미있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 함수다.

서술적인 이름을 사용하자

  • 함수가 맡은 일을 잘 표현하는 이름을 사용하자
  • 이름만 읽고도 그 함수가 어떤 기능을 수행하는지 짐작할 수 있는 이름을 짓자
  • 이름이 길어도 괜찮다. 겁먹지말자~
    • 이름이 짧고 간단한대신 주석이 존재하는 함수보다 이름이 서술적이며 길고 주석이 없는 함수가 더 좋다.

인수

  • 함수의 인수는 없을수록 좋다.
    • 다만 좌표를 알려주는 Point p = new Porint(0,0); 처럼 인수가 적절하게 있는 함수가 더 좋을때가 있다.
  • 플래그 인수를 넘기지말자.
    • 함수로 boolean 값을 넘긴다는것 자체가 그 함수가 여러가지 일을 한꺼번에 처리할 목적이기에
      • true 면 ~~ 를 진행하고 , false면 ~~ 를 진행하는 함수를 만들지 말자.
  • 인수가 많아지면 객체로 만들어 줄이자.
  • 부수효과를 일으키지말자.
    • 함수이름에 명시한 기능만 정직하게 수행하자.

명령과 조회를 분리하자

  • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야한다.
  • 객체 상태를 변경하거나 → 명령
  • 객체 정보를 반환하거나 → 조회

반복하지마라

  • 중복되는 코드를 줄이자
  • 수정시에 수정해야할 부분도 늘어난다.
  • 또한 가독성 역시 올라간다.
    • 중복 코드들을 함수로 따로 정의하거나
    • 중복되는 코드들을 부모클래스에 정의하는 전략을 사용해도 된다.

함수를 작성하는 방법

  • 밥아저씨 또한 처음 함수를 작성할때는 길고 복잡하게 작성한다.

들여쓰기도 많고 중복도 많지만 테스트 단계에서 점점 함수를 다듬는다고 한다.

코드를 다듬고, 따로 또 함수를 만들어 빼고, 클래스를 분리하기도 한다.

→ 이러한 리팩토링이 이뤄지는 가운데 항상 단위테스트는 통과해야한다 ( 테스트의 중요성 )

함수는 그 언어의 동사다.

길이가 짧고, 이름이 좋고, 체계가 잡힌 함수를 만들자.

' > CleanCode' 카테고리의 다른 글

7장 오류처리  (0) 2023.12.31
6장 객체와 자료 구조  (0) 2023.12.16
5장 형식 맞추기  (0) 2023.12.14
4장 주석  (0) 2023.12.11
1장 깨끗한 코드 , 2장 의미 있는 이름  (0) 2023.12.07