함수는 작게 만들자
- 블록과 들여 쓰기
- if문, else문, while문 등이 들어가는 블럭은 한 줄이어야 한다.
- 함수안에서 여러가지 작은함수들을 호출한다면 호출된 함수명들을 통해 함수를 이해하기 쉬워진다.
- 중첩 구조가 생길만큼 함수가 커져서는 안된다.
한가지만 하자
- 한 가지 목적을 잘 처리하는 함수를 만들자
- 여러 목적을 가진 함수를 읽는것은 그 함수의 의도를 파악하기 어려워진다.
- 함수가 한가지 로직만 처리하는지 알 수 있는 방법
- 함수 코드중 어떠한 의미있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 함수다.
서술적인 이름을 사용하자
- 함수가 맡은 일을 잘 표현하는 이름을 사용하자
- 이름만 읽고도 그 함수가 어떤 기능을 수행하는지 짐작할 수 있는 이름을 짓자
- 이름이 길어도 괜찮다. 겁먹지말자~
- 이름이 짧고 간단한대신 주석이 존재하는 함수보다 이름이 서술적이며 길고 주석이 없는 함수가 더 좋다.
인수
- 함수의 인수는 없을수록 좋다.
- 다만 좌표를 알려주는 Point p = new Porint(0,0); 처럼 인수가 적절하게 있는 함수가 더 좋을때가 있다.
- 플래그 인수를 넘기지말자.
- 함수로 boolean 값을 넘긴다는것 자체가 그 함수가 여러가지 일을 한꺼번에 처리할 목적이기에
- true 면 ~~ 를 진행하고 , false면 ~~ 를 진행하는 함수를 만들지 말자.
- 함수로 boolean 값을 넘긴다는것 자체가 그 함수가 여러가지 일을 한꺼번에 처리할 목적이기에
- 인수가 많아지면 객체로 만들어 줄이자.
- 부수효과를 일으키지말자.
- 함수이름에 명시한 기능만 정직하게 수행하자.
명령과 조회를 분리하자
- 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야한다.
- 객체 상태를 변경하거나 → 명령
- 객체 정보를 반환하거나 → 조회
반복하지마라
- 중복되는 코드를 줄이자
- 수정시에 수정해야할 부분도 늘어난다.
- 또한 가독성 역시 올라간다.
- 중복 코드들을 함수로 따로 정의하거나
- 중복되는 코드들을 부모클래스에 정의하는 전략을 사용해도 된다.
함수를 작성하는 방법
- 밥아저씨 또한 처음 함수를 작성할때는 길고 복잡하게 작성한다.
들여쓰기도 많고 중복도 많지만 테스트 단계에서 점점 함수를 다듬는다고 한다.
코드를 다듬고, 따로 또 함수를 만들어 빼고, 클래스를 분리하기도 한다.
→ 이러한 리팩토링이 이뤄지는 가운데 항상 단위테스트는 통과해야한다 ( 테스트의 중요성 )
함수는 그 언어의 동사다.
길이가 짧고, 이름이 좋고, 체계가 잡힌 함수를 만들자.
'책 > 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 |