Clean Code - 제 2장 함수.

함수

작게 만들어라.

 함수를 작게 만들어서 좋아진다는 근거는 없지만, 저자의 경험 상 작은 함수가 좋다고 이야기 한다. 예시로는 함수의 Line 수가 2~4개로 설명하고 있다.

한 가지만 하라.

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

 함수 이름으로 여러가지 활동을 유추할 수 있다면, 그 활동을 다른 함수들로 쪼개는 작업을 해야 한다.

위에서 아래로 코드 읽기: 내려가기 규칙

 내려가기 규칙을 제안한다. 한 함수의 다음 함수는 추상화 수준이 낮아져야 한다. 그러면 위에서 아래로 코드를 이야기처럼 이해할 수 있다.

서술적인 이름을 사용해라.

 이름이 길어도 좋다. 비난 받아도 상관없다. 자세한 내용을 주석으로 사용하지 않을까? 서술적인 긴 이름이 주석보다 더 개발자들에게 쉽고 직관적으로 받아드린다. 길어도 좋은 이름을 선택하자.

반복하지 마라.

 중복인 함수와 같은 작업하는 함수는 줄이자.

함수 작명법.

 함수와 인수가 동사/명사 쌍을 이뤄야 한다. 예를들어 write(name)은 누구나 곧바로 이해한다. '이름' 이 무엇이든 '쓴다'는 뜻이다. 좀 더 나은 이름은 wirteField(name) 이다. 그러면 '이름'이 '필드'라는 사실이 분명히 드러난다.

오류 코드보다 예외를 사용해라

Try-Catch 문장을 하나의 메서드로 만들자. 오류 처리도 한가지 작업이기 때문에 오류 처리 함수는 오류만 처리한다. 

함수인자

 이상적인 함수 인자의 개수는 '0'개다. '0' 개로 만들기 위해 노력해라. 

변환함수에서 입력/반환 인수.

  1. Stringbuffer transformer(StringBuffer in) 
  2. void transform(StringBuffer out) 
 저자는 1번을 추천한다. 변환 함수에서 출력 인수를 사용하면 혼란스러울 수 있다. 일반적으로 인수를 입력으로 해석한다. 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 선택하자.

결론 

 저자는 소프트웨어를 만다는 작업을 글짓기에 비유한다. 일단 처음부터 끝까지 만들고 다시 읽는다. 그리고 정리하고 다시 읽는다. 하나의 이야기를 전달하기 위해 계속해서 풍부하고 표현력있는 문장으로 만들도록 노력하자.

댓글

이 블로그의 인기 게시물

JPA 와 함께 - 느낀점

Scott 과 함께 - Recursive Query 구현하기