Skip to content

Commit fb03a01

Browse files
committed
feat: Add part 03, chapter 08
1 parent dd04b10 commit fb03a01

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

chapter08/README.md

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# 08장. 도약
2+
3+
## Introduction
4+
5+
- 리팩터링의 효과는 선형적으로 증가하지 않는다.
6+
- 하지만 가장 중요한 통찰력은 어느 순간 갑자기 떠오르고 그에 따른 충격은 프로젝트 전체로 퍼져나간다.
7+
- 팀은 느리지만 그러나 확실하게 습득된 지식을 자신의 것으로 만들고 이를 모델에 투영한다.
8+
- 중요한 문제는 무슨 일이 일어나고 있는지 인식하고 이를 어떻게 처리할지 결정하는 것
9+
10+
## 도약에 관한 일화
11+
12+
### 괜찮은 모델이기는 하지만
13+
14+
### 도약
15+
16+
### 더 심층적인 모델
17+
18+
- 종종 다이어그램이 “너무 기술적”이라고 지적하곤 했던 업무 전문가들은 새로운 모델 다이어그램을 완벽하게 이해할 수 있었다.
19+
20+
### 냉정한 결정
21+
22+
- 리팩터링의 근본적인 취지는 항상 모든 것이 정상적으로 동작하는 상태를 유지하면서 작은 단계를 밟아가며 코드를 개선해야 한다는 점
23+
24+
### 결말
25+
26+
## 기회
27+
28+
- 심층 모델로 도약할 수 있는 기회가 찾아올 때 우리는 종종 두려움을 느낀다.
29+
- 진정으로 심층적인 모델로 나아가려면 근본적인 사고방식의 전환이 필요하며, 설계의 대부분을 수정해야 한다.
30+
- 많은 프로젝트에서는 모델과 설계에서 나타나는 가장 중요한 발전은 이러한 도약을 거쳐 이뤄진다.
31+
32+
## 기본에 집중하라
33+
34+
- 도약이 등장할 수 있는 무대를 마련하려면 지식탐구와 함께 인내심을 가지고 UBIQUITOUS LANGUAGE 를 만드는 일에 집중해야 한다.
35+
- 똑같은 일반적인 개념의 틀에 갇혀 있더라도 점진적으로 모델의 깊이를 더하는 적정 규모의 개선 작업을 망설여서는 안 된다.
36+
- 너무 멀리 내다보려고 하다가 마비상태에 빠져서는 안 된다.
37+
- 다만 기회를 놓치지 않기 위해 예의주시한다.
38+
39+
## 후기: 연이은 새로운 통찰력의 출현

part03.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# 03부. 더 심층적인 통찰력을 향한 리팩터링
2+
3+
## Introduction
4+
5+
- 가장 어려운 일은 도메인 전문가의 섬세한 관심사를 포착하고 효과적인 설계를 이끌어줄 명확한 모델을 발견하는 것
6+
- 궁극적으로, 도메인에 대한 심층적인 이해를 반영한 모델이 필요
7+
- 유용한 모델을 성공적으로 개발하기 위해 명심해야 할 세 가지 관건
8+
- 정교한 도메인 모델을 만들 수 있으며, 노력을 들일 만한 가치가 있다.
9+
- 해당 도메인을 학습하는 개발자와 도메인 전문가의 긴밀한 참여와 반복적인 리팩터링 과정 없이 유용한 모델을 개발하기란 쉽지 않다.
10+
- 유용한 모델을 효과적으로 구현하고 사용하려면 정교한 설계 기술이 필요할지도 모른다.
11+
12+
## 리팩터링 수준
13+
14+
- 리팩터링이란 소프트웨어의 기능을 수정하지 않고 설계를 다시 하는 것
15+
- 자동화된 단위 테스트 스위트가 구비돼 있다면 비교적 안전하게 리팩터링을 수행할 수 있다.
16+
- 그러나 리팩터링을 다루는 대부분의 문헌에서는 매우 상세한 수준에서 코드의 가독성을 높이거나 쉽게 개선하는 기계적인 변경에 초점을 맞춘다.
17+
- 리팩터링의 목표는 개발자가 단순히 코드가 수행하는 바를 이해하는 것뿐만 아니라 왜 그렇게 수행되는지를 이해하고 도메인 전문가와의 의사소통에 이를 연관시키는 것
18+
19+
## 심층 모델
20+
21+
- 심층 모델(deep model)이란 도메인의 피상적인 측면은 배제하고 도메인 전문가의 주요 관심사와 가장 적절한 지식을 알기 쉽게 표현하는 모델이다.
22+
- 이 정의가 추상화를 의미하는 것은 아니다.
23+
- 도메인과 조화를 이루는 모델에서는 융통성, 단순함, 설명력을 얻을 수 있다.
24+
- 그러한 모델이 공통적으로 지나고 있는 한 가지 특정은 업무 전문가가 즐겨 쓰는 단순하지만 충분히 추상적인 언어가 존재한다는 것
25+
26+
## 심층 모델/유연한 설계
27+
28+
- 한 가지 다행인 점은 도메인에 대해 새롭게 알게 된 내용을 반영하도록 지속적으로 모델과 코드를 변경하는 실제 행위 자체로 말미암아 여러 부분에 중복될 수 있는 공통적인 부분을 손쉽게 처리하는 동시에 변경이 필요한 적절한 지점에 유연성을 제공할 수 있다는 것
29+
- 유연한 설계는 변경을 촉진할뿐 아니라 모델 자체의 개선에도 기여한다.
30+
31+
## 발견 과정
32+
33+
- 모델과 설계 간의 관계가 매우 밀접하므로 코드가 리팩터링하기 어려운 경우 더는 모델링을 진행할 수가 없다.
34+
- 발견한 개념을 훌륭하게 모델링하기 위해 보통 창조성과 시행착오에 의존하겠지만 종종 누군가가 쉽게 적용할 수 있는 패턴을 만들어 놓은 경우도 있다.

0 commit comments

Comments
 (0)