본문 바로가기
개발/개발도서

[클린코드] 3장 - 함수

by lucidmaj7 2022. 8. 16.
728x90
반응형

어떤 프로그램이든 가장 기본적인 단위가 함수이다.

작게 만들어라!

  • 함수를 만드는 첫째 규칙은 '작게'다.
  • 함수를 만드는 둘째 규칙은 '더 작게'다.

한 가지만 해라!

  • 함수는 한 가지를 해야한다. 그 한가지를 잘해야한다. 그 한가지만 해야한다.
  • 의미 있는 이름으로 다른 함수를 추출 할 수 있다면 그 함수는 여러 작업을 하는 셈이다.

함수 당 추상화 수준은 하나로

  • 함수가 확실히 '한 가지'작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다

내려가기 규칙

  • 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수에는 추상화 수준이 한단계 낮은 함수가 온다. 즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한번에 한 단계식 낮아진다.

서술적인 이름을 사용하라!

  • 함수가 작고 단순할수록 서술적인 이름을 고르기도 쉬워진다.
  • 이름이 길어도 괜찮다.
  • 길고 서술적인 이름이 길고 서술적인 주석보다 좋다.
  • 서술적인 이름을 사용하면 개발자 머릿속에서도 설계가 뚜렷해지므로 코드를 개선하기 쉬워진다.
  • 이름을 붙일 때는 일관선이 있어야한다. 모듈 내에서 함수이름은 같은 문구, 명사, 동사를 사용한다.

함수 인수

  • 함수에 이상적인 인수 개수는 0개다. 다음은 1개고, 다음은 2개다. 3개는 가능한 피하는 편이 좋다. 4개 이상은 특별한 이유가 필요한다.
  • 함수의 의도나 인수의 순서와 의도를 제대로 표현하려면 좋은 함수이름이 필수다.

부수 효과릘 일으키지 마라!

  • 부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까.
  • 함수 선언부를 찾아보는 행위는 코드를 보다가 주춤하는 행위와 동급이다. 인지적으로 거슬린다는 뜻이므로 피해야한다.
  • 객체 지향 언어에서는 출력 인수를 사용할 필요가 거의 없다.
  • 일반적으로 출력인수는 피행햐ㅏㄴ다. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택한다.

명령과 조회를 구분하라!

  • 함수는 뭔가를 수행하거나 뭔가에 답한거나 둘중하나만 해야한다.

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

  • 오류 코드 대신 예외를 사요하면 새 예외는 Exception 클래스에서 파생된다. 따라서 재컴파일/재배치 없이도 새 예외클래스를 추가할 수 있다.

반복하지 마라!

  • 중복은 소프트웨어에서 모든 악의 근원이다.

함수를 어떻게 짜죠?

  • 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다.
  • 처음부터 탁 짜내지 않는다. 그게 가능한 사람은 없으리라.

결론

  • 프로그래밍의 기술은 언제나 언어 설계의 기술이다. 예전에도 그랬고 지금도 마찬가지다.
  • 대가 프로그래머는 시스템을 (구현할) 프로그램이 아니라 (풀어갈) 이야기로 여긴다.
  • 시스템에서 발생하는 모든 동작을 설명하는 함수 계층이 바로 그 언어에 속한다.
  • 여러분이 작성하는 함수가 분명하고 정확한 언어로 깔끔하게 같이 맞아떨어져야 이야기를 풀어가기 쉬워진다는 사실을 기억하기 바란다.
728x90
반응형

'개발 > 개발도서' 카테고리의 다른 글

[클린코드] 4장 - 주석  (0) 2022.09.19
[클린코드] 2장 - 의미 있는 이름  (0) 2022.08.07
[클린코드] 1장 - 깨끗한 코드  (0) 2022.08.05

댓글