Skip to content

Commit 96fd00d

Browse files
authored
Merge pull request #30 from lee-ji-hoon/hoondong
[6장_이동훈]
2 parents 15f4797 + 724b2e9 commit 96fd00d

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

src/main/kotlin/hoondong/README.md

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
# 6장 메시지와 인터페이스
2+
3+
## 협력과 메시지
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+
35+
**메시지를 보낼 수 있는 인스턴스**
36+
37+
- this
38+
- 메서드의 매개변수
39+
- this의 속성
40+
- this 속성 중 collection 요소
41+
- 메서드 내에서 생성된 지역 객체
42+
43+
### 묻지 말고 시켜라
44+
45+
- 객체의 상태에 관해 묻지 말고 원하는 것을 시켜야 한다는 법칙
46+
- 메시지 수신자의 상태를 기반으로 결정을 내리면 안됨
47+
48+
### 의도를 드러내는 인터페이스
49+
50+
- 이름부터 메서드의 작업을 잘 나타내도록 지어야 함
51+
- 본인의 구현 방식에 대해 나타낼 필요가 없음
52+
- **어떻게 수행하느냐** 보다 **무엇을 하느냐**에 초점을 맞춰야 함
53+
54+
### 명령-쿼리 분리 원칙
55+
56+
- 위의 규칙들을 지킨다고 모두 긍정적인 결과가 나오는 것이 아님
57+
- 책임의 주체가 변하기 때문에 처음 설계와 다른 결과가 나올 수 있음
58+
- 필요에 따라 물어야 하는 경우가 발생함
59+
60+
**루틴** : 어떤 절차를 묶어 호출 가능하도록 이름을 부여한 기능 모듈
61+
62+
**프로시저** : 정해진 절차에 따라 내부의 상태를 변경하는 루틴 (반환값 X) → **명령**
63+
64+
**함수** : 정해진 절차에 따라 필요한 값을 계산해서 반환하는 루틴 (부수효과 X) → **쿼리**
65+
66+
⇒ 예측 가능한 협력을 만들기 위해 명령과 쿼리를 분리하여 사용

0 commit comments

Comments
 (0)