From bea2fe8d3bf9ffab3020ef9efecea32b89e8b95b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B6=8C=EC=98=A4=EC=97=B0?= <61301574+oyeon-kwon@users.noreply.github.com> Date: Thu, 23 May 2024 09:23:53 +0900 Subject: [PATCH] =?UTF-8?q?[=EA=B6=8C=EC=98=A4=EC=97=B0]=20=EC=B1=95?= =?UTF-8?q?=ED=84=B08:=20=EA=B3=84=EC=B8=B5=ED=98=95=20=EC=84=A4=EA=B3=841?= =?UTF-8?q?=20(#49)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\352\266\214\354\230\244\354\227\260.md" | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 "\354\261\225\355\204\260_8/\352\266\214\354\230\244\354\227\260.md" diff --git "a/\354\261\225\355\204\260_8/\352\266\214\354\230\244\354\227\260.md" "b/\354\261\225\355\204\260_8/\352\266\214\354\230\244\354\227\260.md" new file mode 100644 index 0000000..b8ce31f --- /dev/null +++ "b/\354\261\225\355\204\260_8/\352\266\214\354\230\244\354\227\260.md" @@ -0,0 +1,34 @@ +## Ch 8. 계층형 설계 1 + +- 소프트웨어 설계란 무엇입니까? + - 코드를 만들고 테스트하고 유지보수하기 쉬운 프로그래밍 방법을 선택하기 위해 미적 감각을 사용하는 것 +- 계층형 설계란 무엇인가요? + - 소프트웨어를 계층으로 구성하는 기술 + - 계층 예시 + - 비즈니스 규칙 (gets_free_shipping) + - 장바구니를 위한 동작들 (remove_item) + - 카피 온 라이트 + - 언어에서 지원하는 배열 관련 기능 +- 설계 감각을 키우기 + - 계층형 설계 감각을 키우기 위한 입력과 출력 + - 계층형 설계 패턴 + - 패턴 1: 직접 구현 + - 패턴 2: 추상화 벽 + - 패턴 3: 작은 인터페이스 + - 패턴 4: 편리한 계층 +- 패턴 1: 직접 구현 + - 직접 구현 패턴을 사용하면 비슷한 추상화 계층에 있는 함수를 호출합니다. + - 같은 계층에 있는 함수는 같은 목적을 가져야 합니다. + - 직접 구현한 코드는 한 단계의 구체화 수준에 관한 문제만 해결합니다. + - 계층형 설계는 특정 구체화 단계에 대한 풍부한 단서를 보여줍니다. + - 함수를 추출하면 더 일반적인 함수로 만들 수 있습니다. + - 일반적인 함수가 많을수록 재사용하기 좋습니다. + - 복잡성을 감추지 않습니다. +- 요점 정리 + - 계층형 설계는 코드를 추상화 계층으로 구성 + - 어떤 구체화 단계로 쓸지 결정하는 것이 중요 + - 함수 이름: 의도를 알려줌 + - 함수 본문: 중요한 세부 사항을 알려줌 +- 내가 정리한 결론 + - 결국 배열을 직접 참조하지 않도록 코드를 구현하라 (함수로 제작) + - 계층 간 차이를 보기 위해서는 호출 그래프를 그리면 쉽다.