Skip to content

Commit

Permalink
챕터 9
Browse files Browse the repository at this point in the history
  • Loading branch information
hyesungoh committed May 6, 2024
1 parent 5687172 commit 679bdce
Showing 1 changed file with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions 챕터_9/오혜성.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# 계층형 설계 2

## 추상화 벽

* 호출 그래프에 어떤 계층은 세부 구현을 감추고 인터페이스를 제공함
* 이 인터페이스를 사용해 코드를 만들면 높은 차원으로 생각할 수 있음

* 추상화 벽 아래에 있는 세부 구현을 바꾸고, 추상화 벽에 있는 인터페이스만 바꾸면 상위 계층은 바뀔 필요 없음

### 추상화 벽은 언제?

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

## 작은 인터페이스

* 인터페이스를 최소화해 하위 계층이 불필요하게 커지는 것을 막자

* 왜?
+ 추상화 벽에 코드가 많을 수록 구현이 변경되었을 때 고쳐야 할 것이 많아짐
+ 낮은 수준의 코드는 이해하기 더 어려움
+ 추상화 벽에 코드가 많을수록 팀 간 조율해야 할 것도 많아짐
+ 추상화 벽에 인터페이스가 많으면 알아야 할 것이 많아 사용하기 어려움

## 편리한 계층

* 지금 편리한가?
+ 만약 작업하는 코드가 편리하다고 느낀다면 설계는 조금 멈춰도 됨
+ 하지만 구체적인 것을 많이 알아야 하거나, 코드가 지저분하다고 느껴진다면 다시 패턴을 적용하자

## 호출 그래프로 알 수 있는 것들

```
비기능적 요구사항이란?
소프트웨어 설계를 하는 중요한 이유
- 유지보수성
- 테스트성
- 재사용성
```

* 그래프 가장 위에 있는 코드가 가장 고치기 쉬움
+ 의존성이 없기 때문

* 아래에 있는 코드일 수록 테스트가 중요
+ 사용하고 있는 코드가 많기 때문
+ 바꾸기 쉬운 위의 코드들은 테스트 수명이 짧기 떄문

* 아래에 있는 코드가 재사용하기 더 좋음

0 comments on commit 679bdce

Please sign in to comment.