Community

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

← Go back

TIL Day 3. 3장. 함수

#clean_code
1년 전
425

TIL (Today I Learned)

- 2024.03.04.

오늘 읽은 범위

- 3장. 함수 (p39~p65)

책에서 기억하고 싶은 내용

  • Focus

    • 의도를 분명히 표현하는 함수는 어떻게 구현할까?

    • 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할까?

  • 이렇개 하면 될거야...

    • 작게 만들어라(p42)

      • 20줄도 길다.

      • 들여쓰기는 2Depth 이하로...

    • 한 가지만 하게 만들어라(p44)

      • 함수 당 추상하 수준은 하나!

    • 내려가기 규칙(p46)

      • 위에서 아래로 내려가면서 추상화 수준이 한 단계씩 낮아진다.

    • Switch문(p47)

      • 추상 팩토리에 숨겨라.(GOF - p65)

    • 서술적 이름 사용

      • 2장의 연장선

      • 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하도록 한다.

    • 인수는 되도록 적게 사용하라.(p50)

      • 0개: 이상적

      • 1개: 괜찮아

      • 2개: 좀 읽기 어려워짐

      • 3개: 되도록 피하자

      • 4개 이상: 하지마!!!

      • 플래그 인수: 하지마!!!

      • 객체 인수: 괜찮음. - 객체 명으로 개념을 이해할 수 있음

    • 함수 이름에 인수를 넣어라(p54)

      • assertEquals(expected, actual)보다
        assertExpectedEqualsActual(expected, actual)이
        더 명확하고 인수 순서 기억하기에도 좋다.

    • 부수효과 없애라(p54)

    • 명령과 조회를 분리해라(p56)

      • 함수는

        1) 수행하거나, 2) 답한다.

      • 둘 다는 안돼!!!

    • 오류코드보다 예외 사용(p57)

      • try/catch/finally를 사용해라

        • 단, 각 구문 블록도 추상화해라

    • 반복하지마라(p60)

    • 구조적 프로그래밍하라(p61)

      • return문은 1개만...

      • break, continue, goto 절대 안돼!!!!

내가 생각하는 핵심과 해석

  • 함수는 작게 만들어라.

  • 이것을 잊지말고 수행해라.

  • 내려가기 규칙을 준수하자.

  • 2장의 내용을 잊지말고 수행해라.

첨언

3장의 길고 긴 내용은 "함수를 작게 작성하라"라는 한 문장으로 요약할 수 있다.

반성과 각오

사실 알고 있는 내용입니다.

하지만 실천하고 있지 않습니다.

이유는 함수를 작게 만들기 위해 추상화하는 과정이 괴롭습니다.

처음에는 이 괴로움을 견디며 추상화하기 위해 노력하지만

결국 '이 시간에 기능을 하나 더 만들지...'라는 생각에 놓아버리게 됩니다.

이번에는 유혹에 넘어가 놓아버리지 않기를 간절히 바라며

오늘 또 작은 함수만들기를 각오합니다.