Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이유희] 챕터 5: 더 좋은 액션 만들기 #26

Merged
merged 1 commit into from
May 22, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions 챕터_5/이유희.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@


### 챕터 5. 더 좋은 액션 만들기


#### 암묵적 입력과 출력 줄이기

- 어떤 함수에 암묵적 입려과 출력이 있다면 다른 컴포넌트와 강하게 연결된 컴포넌트다
- 다른 곳에서 사용할 수 없으면 모듈이 아니다
- 암묵적 입출력이 있는 함수는 아무 때나 실행할 수 없기에 테스트하기 어렵다
- 액션을 계산으로 바꾸지 못하더라고 암묵적 입출력을 줄이면 테스트하기 쉽고 재사용하기 좋다


#### 계산 분류하기

- 어떤 도메인 구조를 알아야 하는 경우
- 비즈니스 규칙에 대한 함수

이렇게 구분하다보면 코드에서 의미있는 계층이 되기 때문에 기억해두면 좋다
계층은 엉켜있는 코드를 풀면 자연스럽게 만들어진다.

> 넥스트스텝 TDD 강의에서 포비님이 단위테스트를 작성하고 지우다 반복하다보면 리프 노드를 발견할 수 있고 그 지점이 단위테스트 시작점이 된다고 알려주셨다. 여기서 말하는 엉켜있는 코드를 푸는 방법과 같은 맥락인듯?

Comment on lines +22 to +23
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋은 공유 감사합니다!!! :godmode:


#### 엉켜있는 코드 풀기

- 함수를 사용하면 관심사를 분리할 수 있다
- 함수는 인자로 넘기는 값과 그 값을 사용하는 방법을 분리한다
- 분리된 것은 언제든 쉽게 조합할 수 있다
- ***엉켜있는 것을 풀면 개념을 중심으로 쉽게 구성할 수 있다***

분리의 장점
- 재사용하기 쉽다
- 유지보수하기 쉽다
- 테스트하기 쉽다



```
function add_item(cart, name, price){
var new_cart = cart.slice();
new_cart.push({
name: name,
price: price
});
return new_cart;
}
```
- 문제점
- add_item()이 cart, item 구조를 모두 알고 있다
- 개선
- add_item() 을 cart, item을 각각 다루는 함수로 분리한다


#### 비즈니스 규칙과 장바구니 기능 차이

- 일반적인 도메인과 핵심 도메인의 차이
- 일반적인 장바구니 기능이 아닌 MegaMart의 장바구니에서 운영하는 특별한 규칙
- 비즈니스 규칙에서 장바구니가 배열인지 알아야 한다면 문제가 된다.

> 도메인 계층에서 일급 콜렉션을 자주 사용하는데 자료구조에 의존하는 일급콜렉션은 뭐지?!?!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OOP 관련된 내용을 많이 공부 하신 것 같네요!! 발표 해주실 때 이런 관점에서 해주시면 재미있을 것 같아요!!

Loading