작게 만들어라
함수를 만드는 첫 번째 규칙은 '작게'다.
if 문 / else 문 / while 문 등에 들어가는 블록은 한 줄 이어야 한다.
대개 거기서 함수를 호출한다. 그러면 바깥을 감싸는 함수가 작아질 뿐 아니라, 블록 안에서 호출하는 함수 이름을 적절히 짓는다면 코드를 이해하기도 쉬워진다. 중첩 구조가 생길 만큼 함수가 커져서는 안 된다는 뜻이다.
한 가지만 해라
함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다.
함수가 '한 가지'만 하는지 판단하는 방법은 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다.
서술적인 이름을 사용하라
함수 이름을 정할 때는 여러 단어가 쉽게 읽히는 명명법을 사용한다.
그런 다음, 여러 단어를 사용해 함수 기능을 잘 표현하는 이름을 선택한다.
함수 인수
함수에서 이상적인 인수 개수는 0개(무항)다. 다음은 1개(단항)고, 다음은 2개(이항)다. 3개(삼항)는 가능한 피하는 편이 좋다.
4개(다항) 이상은 특별한 이유가 필요하다. 특별한 이유가 있어도 사용하면 안 된다.
테스트 관점에서, 인수가 3개를 넘어가면 인수마다 유효한 값으로 모든 조합을 구성해 테스트하기가 상당히 부담스러워진다.
함수로 부울 값을 넘기는 관례는 정말로 끔찍하다. 함수가 한꺼번에 여러 가지를 처리하는 셈이기 때문이다.
인수가 2-3개 필요하다면 일부를 독자적인 클래스 변수로 선언할 가능성을 짚어본다. 객체를 생성해 인수를 줄이는 방법이다.
단항 함수는 함수와 인수가 동사/명사 쌍을 이뤄야 한다.
일반적으로 출력 인수는 피해야 한다. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택한다.
명령과 조회를 분리하라
함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. 둘 다 하면 안 된다. 객체 상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나다. 둘 다 하면 혼란을 초래한다.
오류 코드보다 예외를 사용하라
try/catch 블록은 별도 함수로 뽑아내는 편이 좋다.
오류 처리도 '한 가지' 작업만 해야 한다. 오류를 처리하는 함수는 오류만 처리해야 마땅하다.
'독서록 > Clean Code' 카테고리의 다른 글
[Clean Code] 6장 객체와 자료 구조 (0) | 2022.04.20 |
---|---|
[Clean Code] 5장 형식 맞추기 (0) | 2022.04.19 |
[Clean Code] 4장 주석 (0) | 2022.04.18 |
[Clean Code] 2장 의미 있는 이름 (0) | 2022.04.12 |
[Clean Code] 1장 깨끗한 코드 (0) | 2022.04.11 |