챕터 9 : 계층형 설계2

챕터 9 문제 :좋은 인터페이스란?

액션을 계산으로 만들 수 없다면 암묵적 입력과 출력을 줄여 설계를 개선한다. 설계는 엉켜있는 코드를 푸는 것. 잘 분리한다. 중복이나 불필요한 코드도 없앤다.


p.202, 221

Q. 계층형 설계 패턴 4가지를 설명해보세요

A.

  1. 직접 구현 계층형 설계 구조를 만드는데 도움됨.

  2. 추상화 벽 세부구현을 감춘 함수로 이루어진 계층. 추강화 벽에 있는 함수를 사용할 때 구현을 몰라도 함수를 쓸수 있음. 추상화 벽으로 추상화 벽 아래에 있는 코드와 위에 있는 코드의 의존성을 없앨 수 있음.

  3. 작은 인터페이스 새로운 코드를 추가할 위치에 관한 것.

  4. 편리한 계층 다른 패턴과 다르게 조금 더 현실적이고 실용적.

P.202 Q. 추상화 벽을 사용하면 좋을 때

  1. 쉽게 구현을 바꾸기 위해
  2. 코드를 읽고 쓰기 쉽게 만들기위해
  3. 팀간에 조율해야할 것을 줄이기 위해
  4. 주어진 문제에 집중하기 위해

P.219 Q. 추상화 벽을 작게 만들어야하는 이유 A.

  1. 추상화 벽에 코드가 많을 수록 구현이 변경되었을 떄 고쳐야할 것이 많음
  2. 추상화 벽에 있는 코드는 낮은 수준의 코드이기 때문에 더 많은 버그가 있을 수 있음.
  3. 낮은 수준의 코드는 이해하기 어려움
  4. 추상화 벽에 코드가 많을 수록 팀간 조율해야할 것도 많아짐
  5. 추상화 벽에 인터페이스가 많으면 알아야 할 것이 많아 사용하기 어려움.

P.222, 229 Q. 그래프로 알수있는 코드에 대한 정보 A. 기능적 요구사항

  • 유지보수성: 요구사항이 바뀌었을떄 가장 쉽게 고칠수있는 코드란?
  • 테스트성: 어떤 것을 테스트하는 게 가장 중요한가?
  • 재사용성: 어떤 함수가 재사용하기 좋은가? 아래 있는 코드를 테스트할수록 얻은 것이 오래감. 재사용하기 좋음 아래있으면 고치기 어려움 자주 안 바뀜

챕터 10

Q. 왜 일급 값이 좋은가? 일급값은 언어에 있는 다른 값처럼 쓸수있음.

  1. 표준화된 원칙
  2. 새로운 ㅗㄷㅇ작에 원칙을 적용할 수 있음
  3. 여러 개를 변경할 때 최적화

P234

Q. 코드의 냄새란? 더 큰 문제를 가져올 수 있는 코드. 코드의 냄새는 일급 값으로 바꾸면 표현력이 더 좋아짐.

  1. 함수 구현이 거의 똑같
  2. 함수 이름이 구현의 차이를 만듦.

ㅇㅇ 함수 이름에 있는 암묵적 인자는 함수의 이름으로 구분하는 코드의 냄새. 코드로 다룰 수 없는 함수 이름대신 일급 값인 인자로 바꾸는 암묵적 인자를드러내기. 동작을 추상화하기위해 본문을 백으로 바꾸기 서로 다른 함수의 동작 차이를 일급 함수 인자로 만들기

함수 이름에 있는 암묵적 인자를 드러내는 리팩터링. 단계

  1. 함수 이름에 있는 암묵적 인자 확인
  2. 명시적인 인자를 추가
  3. 함수 본문에 하드 코딩된 값을 새로운 인자로 바꿔줌
  4. 함수를 호출하는 곳을 고침.

P.239 냄새 나는 코드들을 일급 함수로 바꾸면 어떤 필드명이 있는지 어떻게 아나요? API 문서로 정리한다. 추상화 벽에 정의한 것처럼.

Q. 일급이 아닌 기능

어떤 문법이든 일급 함수로 바꿀 수 있음.


챕터 11.


P287. Q. 고차함수란

고차 함수는 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 말한다. 고차함수는 인자로 받은 함수를 필요한 시점에 호출하거나 클로저를 생성하여 반환한다. 자바스크립트의 함수는 일급 객체이므로 값처럼 인자로 전달할 수 있으며 반환할 수도 있다.