Community

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

← Go back
TIL 05
#clean_code
2년 전
563


TIL (Today I Learned)

2022.02.22

오늘 읽은 범위

3장.함수

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

  • 함수를 만드는 첫째 규칙은 '작게!' 다. 함수를 만드는 둘째 규칙은 '더 작게!' 다. (P.42)

  • 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다. 당연한 말이지만, 그래야 함수는 읽고 이해하기 쉬워진다.

    함수는 한 가지를 해야한다. 그 한가지를 잘 해야한다. 그 한 가지만을 해야 한다. (P.44)

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

  • 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. (P.46)

  • 즉 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한번에 한 단계씩 낮아진다. 나는 이것을 내려가기 규칙이라 부른다. (P.46)

  • "코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 부르면 되겠다." (P.49)

  • 함수의 의도나 인수의 순서와 의도를 제대로 표현하려면 좋은 함수 이름이 필수다. 단항 함수는 함수와 인수가 동사 / 명사 쌍을 이뤄야 한다. (p.54)

  • 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. 둘 다 하면 안된다. 객체상태를 변경하거나 아니면 객체 정보를 반환하거나 둘 중 하나다. 둘 다 하면 혼란을 초래한다. (P.56)

  • 함수는 '한 가지'작업만 해야한다. 오류처리도 '한 가지'작업에 속한다. 그러므로 오류를 처리 하는 함수는오류만 처리해야 마땅하다. (P.59)

  • 그래도 중복은 문제다. 코드 길이가 늘어날 뿐 아니라 알고리즘이 변하면 네 곳이나 손봐야 하니까. 게다가어느 한곳이라도 빠뜨리는 바람에 오류가 발생할 확률도 네 배나 높다. (P.60)

  • 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. (P.61)

  • 처음부터 탁 짜내지 않는다. 그게 가능한 사람은 없으리라. (P.62)

  • 대가 프로그래머는 시스템을 (구현할)프로그램이 아니라(풀어갈)이야기로 여긴다. (P.62)

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

  • 함수는 어렵다. 쓸때도 머리를 싸매서 써야하고, 읽을때도 많은 시간을 들여 해석해야 된다.

  • 여태 하나의 함수에 여러 작업을 넣고 돌린게 문제였다. 반성을 합니다.

  • 하나의 함수에 하나의 작업을 넣으라는 명언 명심하고 작성하겠습니다.

  • 몇번을 더 읽어야 가슴속에 새겨질 것 같은 챕터였다.

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

추상 팩토리(ABSTRACT FACTORY)

다양한 구성 요소 별로 '객체의 집합'을 생성해야 할 때 유용하다. 이 패턴을 사용하여 상황에 알맞은 객체를 생성할 수 있다.

대표적인 예로, 자바 프로그래밍 언어GUI 구성 요소인 AWT/Swing 라이브러리의 룩 앤드 필 변경 기능을 들 수 있다. 메탈, 마이크로소프트 윈도우, 맥 OS 등의 모양으로 변경할 수 있다. 이에 따라 추상 팩토리에 있는 기본 팩토리 객체가 변경된다. 그러면 이후로 생성되는 GUI 객체들은 전부 해당 룩앤필에 따른다.

데이크스트라의 구조적 프로그래밍

프로그램의 논리 구조는 제한된 몇 가지 방법만을 이용하여 비슷한 서브 프로그램들로 구성된다. 프로그램에 있는 각각의 구조와 그 사이의 관계를 이해하면 프로그램 전체를 이해해야 하는 수고를 덜 수 있어, SoC에 유리하다.