Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL(3장. 함수)
#clean_code
2년 전
616


TIL (Today I Learned)

2022.02.22

오늘 읽은 범위

3장. 함수

책에서 기억하고 싶은 내용을 써보세요.

  1. 함수는 작게!

  • if/else/while문에 들어가는 블록은 한 줄로! 거기서 대부분 함수를 호출하는데 이때 함수 이름을 적절히 지으면 이해가 더 쉬울 것.

  • ‘중첩 구조가 생길만큼 함수가 커지면 안 된다는 뜻’

  1. 함수는 짧게 한 가지 일만, 잘 하도록 한다.

  • 한 가지 작업만 한다는 게 무슨 뜻이냐면, 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 것.

*코드는 위에서 아래로, ‘내려가기' 규칙에 따라 이야기처럼 읽혀야 좋다. 한 함수 다음에는 추상화 수준이 한 단계 낮은 함수가 온다.(- 아래로 내려갈수록 더 구체적으로 쓰인다는 뜻인가?)

  1. 함수 이름은 서술적으로 짓는다. 길어도 괜찮다! (그만큼 개발자 머릿속에서도 설계가 뚜렷해지니까 코드 개선 하기도 수월하다.)

  • 대신 일관성 있게!!!! 예) includeSetupAndTeardownPages, includeSetupPage, includeSuiteSetupPage ...

  1. 함수 인수는 없을수록 좋다. 최선은 입력 인수가 없게, 차선은 입력 인수가 1개.

  • 이벤트 함수는 드물지만 아주 유용한 단항 함수 형식!

  • 직교 좌표계 점은 인수 2개를 취하지만, 이건 한 값을 표현하는 두 요소이고, 순서도 정해져 있다.

  • 반드시 나쁘다기보다, 함수 2개를 썼을 때 뒤따를 위험을 함께 생각해라!

*함수 이름에 인수 이름을 추가하면 아주 좋다!

예) assertEquals > assertExpectedEqualsActual(expected, actual)

  1. 함수는 뭔가를 수행하거나(명령) / 뭔가에 답하거나.(조회) 그 둘을 분리하라.

  • public boolean set(String attribute, String value); ⇒ 이름이 attribute인 속성을 찾아 값을 value로 설정 + 성공 여부 조회. 혼란스럽다!

⇒ if (attributeExists("username")) { setAttribute("username", "unclebob"); ... }

  1. 중복을 피하라.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 점점 내용이 어려워지고 있다. 자바를 전혀 모르니 중간중간 나오는 예시들도 이해하는 데 한계가 있고, 코딩 경험이 없다보니 책 내용을 읽으며 적용해보기도 애매하다는 생각이 든다. 예를 들어, ‘추상화’의 사전적 정의는 이해했지만 ‘.append(”\n”)와 같은 코드는 추상화 수준이 아주 낮다' 같은 문장이 나오면 왜 그런 건지 이해할 수가 없다. 부수 효과의 뜻은 이해했는데, 3-6 사례에서 함수가 일으키는 부수효과가 Session.initialize() 호출이라는 점은 왜 그런지 모르겠다. 이렇게 예시도 이해할 수가 없으니까 집중력이 떨어지고 ㅠㅠ 한국어로 번역된 거라 그런지 다형적 객체 같은 표현을 읽었을 때 바로바로 이해하기 힘들다. 이 상태로 계속 읽어나가는데도 내게 도움이 될까 싶지만.. 우선! 할 수 있는 데까지 이어나가보기로 한다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  1. 렌더링(rendering)

  • ‘Render’라는 건 기본적으로 무엇인가를 지금과 다른 어떤 상태로 만든다는 뜻. ⇒ Rendering is the process of generating a photorealistic or non-photorealistic image from a 2D or 3D model by means of a computer system.

  1. 추상화: 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것

  2. 부수효과: 함수 내의 실행으로 인해 함수 외부가 영향을 받는 것// 책에서는 이렇게. ‘부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 한다. 때로는 예상치 못하게 클래스 변수를 수정한다. 때로는 함수로 넘 어온 인수나 시스템 전역 변수를 수정한다.’