클린 코드 - 3장 함수
CleanCode ·클린 코드 3장 함수를 잘 만드는 규칙과 간략한 설명을 정리합니다!
규칙
- 최대한 작게 만들어라!
- 한 가지만 해라!
- 지정된 함수 이름 아래 추상화 수준이 하나인 단계만 수행한다면
그 함수는 한 가지 작업만 하는 것 - 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서
여러 단계로 나눠 수행하기 위함 - 의미 있는 이름으로 다른 함수를 추출할 수 있다면 여러 작업을 하는 셈
- 지정된 함수 이름 아래 추상화 수준이 하나인 단계만 수행한다면
- 함수 당 추상화 수준은 하나로!
- 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈림
- 특정 표현이 근본 개념인지 아니면 세부사항인지 구분하기 어려운 탓
- 근본 개념과 세부사항이 뒤섞기 시작하면, 세부사항이 점점 추가될 것
- 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈림
- 위에서 아래로 코드 읽기: 내려가기 규칙
- 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아짐
- 각 함수는 일정한 추상화 수준을 유지
- Switch 문
- switch 문은 N가지를 처리하지만 완전히 피할 수 없음
- 저차원 클래스에 숨기고 절대로 반복하지 않는 방법은 있음
- switch 문은 다형적 객체를 생성하는 코드 안에서만 사용
- 상속 관계로 숨긴 후에는 절대로 다른 코드에 노출하지 않음
- switch 문은 다형적 객체를 생성하는 코드 안에서만 사용
- 서술적인 이름을 사용하라!
- 함수가 하는 일을 잘 표현함
- 길고 서술적인 이름이 길고 서술적인 주석보다 좋음
- 머릿속에서도 설계가 뚜렷져 코드를 개선하기 쉬워짐
- 함수 인수는 적을수록 좋음
- 인수는 개념을 이해하기 어렵게 만듦
- 0개는 이상적, 1개는 괜찮음, 2개 이상부터는 복잡해짐
- 인수가 많아지면 일부를 독자적인 클래스 변수로 선언할 가능성 고려
- 단항 함수는 함수와 인수가 동사/명사 쌍을 이뤄야 함
- 함수 이름에 인수를 넣으면 인수 순서를 기억할 필요 없음
- 플래그 인수는 추하다.
- 한꺼번에 여러 가지를 처리한다고 대놓고 공표하는 셈
- 부수 효과를 일으키지 마라!
- 함수에서 한가지만 해야하며 남몰래 다른 짓을 하면 안됨
- 필요하다면 함수 이름에 분명히 명시해라
- 명령과 조회를 분리해라
- 해석하는 데에 혼란을 일으킬 수 있음
- 오류 코드보다 예외를 사용하라!
- 오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해짐
- try/catch 블록을 별도 함수로 뽑아내는 편이 좋음
- 오류 처리도 한 가지 작업이므로 분리되어야 함
- 반복하지 마라!
- 알고리즘이 변하면 반복된 만큼 수정해야 함
- 반복된 만큼 오류가 발생할 확률도 높아짐