개발자 99% 커뮤니티에서 수다 떨어요!
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에 유리하다.