From 679bdce5f2dae4a62d9273dbdcbd2975c7141cc7 Mon Sep 17 00:00:00 2001 From: hyesungoh Date: Mon, 6 May 2024 23:48:49 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B1=95=ED=84=B0=209?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\230\244\355\230\234\354\204\261.md" | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 "\354\261\225\355\204\260_9/\354\230\244\355\230\234\354\204\261.md" diff --git "a/\354\261\225\355\204\260_9/\354\230\244\355\230\234\354\204\261.md" "b/\354\261\225\355\204\260_9/\354\230\244\355\230\234\354\204\261.md" new file mode 100644 index 0000000..d552ad3 --- /dev/null +++ "b/\354\261\225\355\204\260_9/\354\230\244\355\230\234\354\204\261.md" @@ -0,0 +1,52 @@ +# 계층형 설계 2 + +## 추상화 벽 + +* 호출 그래프에 어떤 계층은 세부 구현을 감추고 인터페이스를 제공함 +* 이 인터페이스를 사용해 코드를 만들면 높은 차원으로 생각할 수 있음 + +* 추상화 벽 아래에 있는 세부 구현을 바꾸고, 추상화 벽에 있는 인터페이스만 바꾸면 상위 계층은 바뀔 필요 없음 + +### 추상화 벽은 언제? + +* 쉽게 구현을 바꾸기 위해 +* 코드를 읽고 쓰기 쉽게 만들기 위해 +* 팀 간에 조율해야 할 것을 줄이기 위해 +* 주어진 문제에 집중하기 위해 + +## 작은 인터페이스 + +* 인터페이스를 최소화해 하위 계층이 불필요하게 커지는 것을 막자 + +* 왜? + + 추상화 벽에 코드가 많을 수록 구현이 변경되었을 때 고쳐야 할 것이 많아짐 + + 낮은 수준의 코드는 이해하기 더 어려움 + + 추상화 벽에 코드가 많을수록 팀 간 조율해야 할 것도 많아짐 + + 추상화 벽에 인터페이스가 많으면 알아야 할 것이 많아 사용하기 어려움 + +## 편리한 계층 + +* 지금 편리한가? + + 만약 작업하는 코드가 편리하다고 느낀다면 설계는 조금 멈춰도 됨 + + 하지만 구체적인 것을 많이 알아야 하거나, 코드가 지저분하다고 느껴진다면 다시 패턴을 적용하자 + +## 호출 그래프로 알 수 있는 것들 + +``` +비기능적 요구사항이란? +소프트웨어 설계를 하는 중요한 이유 + +- 유지보수성 +- 테스트성 +- 재사용성 +``` + +* 그래프 가장 위에 있는 코드가 가장 고치기 쉬움 + + 의존성이 없기 때문 + +* 아래에 있는 코드일 수록 테스트가 중요 + + 사용하고 있는 코드가 많기 때문 + + 바꾸기 쉬운 위의 코드들은 테스트 수명이 짧기 떄문 + +* 아래에 있는 코드가 재사용하기 더 좋음 +