-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
52 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
# 계층형 설계 2 | ||
|
||
## 추상화 벽 | ||
|
||
* 호출 그래프에 어떤 계층은 세부 구현을 감추고 인터페이스를 제공함 | ||
* 이 인터페이스를 사용해 코드를 만들면 높은 차원으로 생각할 수 있음 | ||
|
||
* 추상화 벽 아래에 있는 세부 구현을 바꾸고, 추상화 벽에 있는 인터페이스만 바꾸면 상위 계층은 바뀔 필요 없음 | ||
|
||
### 추상화 벽은 언제? | ||
|
||
* 쉽게 구현을 바꾸기 위해 | ||
* 코드를 읽고 쓰기 쉽게 만들기 위해 | ||
* 팀 간에 조율해야 할 것을 줄이기 위해 | ||
* 주어진 문제에 집중하기 위해 | ||
|
||
## 작은 인터페이스 | ||
|
||
* 인터페이스를 최소화해 하위 계층이 불필요하게 커지는 것을 막자 | ||
|
||
* 왜? | ||
+ 추상화 벽에 코드가 많을 수록 구현이 변경되었을 때 고쳐야 할 것이 많아짐 | ||
+ 낮은 수준의 코드는 이해하기 더 어려움 | ||
+ 추상화 벽에 코드가 많을수록 팀 간 조율해야 할 것도 많아짐 | ||
+ 추상화 벽에 인터페이스가 많으면 알아야 할 것이 많아 사용하기 어려움 | ||
|
||
## 편리한 계층 | ||
|
||
* 지금 편리한가? | ||
+ 만약 작업하는 코드가 편리하다고 느낀다면 설계는 조금 멈춰도 됨 | ||
+ 하지만 구체적인 것을 많이 알아야 하거나, 코드가 지저분하다고 느껴진다면 다시 패턴을 적용하자 | ||
|
||
## 호출 그래프로 알 수 있는 것들 | ||
|
||
``` | ||
비기능적 요구사항이란? | ||
소프트웨어 설계를 하는 중요한 이유 | ||
- 유지보수성 | ||
- 테스트성 | ||
- 재사용성 | ||
``` | ||
|
||
* 그래프 가장 위에 있는 코드가 가장 고치기 쉬움 | ||
+ 의존성이 없기 때문 | ||
|
||
* 아래에 있는 코드일 수록 테스트가 중요 | ||
+ 사용하고 있는 코드가 많기 때문 | ||
+ 바꾸기 쉬운 위의 코드들은 테스트 수명이 짧기 떄문 | ||
|
||
* 아래에 있는 코드가 재사용하기 더 좋음 | ||
|