Skip to content

Commit

Permalink
[정대윤] 챕터10: 일급 함수1, 챕터 11: 일급 함수2 (#60)
Browse files Browse the repository at this point in the history
* 챕터10 정대윤

* 챕터11 정대윤
  • Loading branch information
sensecodevalue authored May 23, 2024
1 parent f3c0860 commit 3316aaa
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 0 deletions.
47 changes: 47 additions & 0 deletions 챕터_10/정대윤.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 일급 함수 1

> 1. 왜 일급 값이 좋은가?
> 2. 일급 함수로 변경하는 법.
## 함수 이름에 있는 암묵적 인자 드러내기

함수 이름이 함수의 구현에 있는 다른 부분을 가르킴.
ex) set`Price`ByName set`Tax`ByName

1. 함수이름에 암묵적인자를 확인 - set`Price`ByName
2. 명시적 인자 추가 - setFieldByName(target, name, `'price'`, value);
=> 이를 통해 `중복`을 줄일 수 있다.
이는 함수이름에 암묵적인자인 price를 `일급값`으로 변경하여 리팩터링.

> 일급 값?
> 함수의 인자로 리턴값으로 쓰일 수 있으며, 변수, 객체, 배열의 값으로 사용될 수 있는 것.
여기의 예시처럼 어떤 내용을 변경하는데 setFieldByName과 같은 것들을 실제로 정의하고 사용한 경험이 있는지 궁금함.
약간 useReducer 같은데서 action을 통해서 저렇게 사용되려나...

### 객체와 배열을 너무 많이 사용하는 것 같다. (데이터 지향 원칙)

중요한건 데이터를 사용할 때 임의의 인터페이스로 감싸지 않고 그대로 사용한다는 점이다.
이를 통해 여러 가지 방법으로 해석이 가능하다는 것이다.
엔티티는 보통 일반적이고 재사용할 수 있어야하기에 형식적인 객체와 배열을 사용해야한다.
이를 인터페이스를 잘 설계해 데이터를 정해진 방법으로만 쓸 수 있다.

## 함수 본문을 콜백으로 바꾸기

1. 본문과 본문의 앞,뒤를 구분 -> 본문의 범위 찾기
2. 전체를 함수로 빼기 -> 본문을 함수로 변경
3. 본문을 빼낸 함수의 인자로 전달한 함수로 변경 -> 콜백 전달 및 실행
=> `중복`을 줄일 수 있음.

```js
function foo(f = "콜백") {
try {
f(); // 함수 본문
} catch (e) {
logger(e);
}
}
```

> 콜백 함수 사용이유는 특정 구분의 특정 문맥안에서 실행되야되서 (ex. try-catch)
> 따라서 고차함수를 쓰면 고차함수의 정의된 문맥에서 코드를 실행 할 수 있음.
39 changes: 39 additions & 0 deletions 챕터_11/정대윤.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
## 함수 본문을 콜백으로 바꾸기

1. 본문과 본문의 앞,뒤를 구분
2. 전체를 함수로 빼기
3. 본문을 빼낸 함수의 인자로 전달한 함수로 변경

함수 내부에서 달라지느느 부분이 있다면 본문이 될 수 있음.

## 함수를 리턴하는 함수 (고차함수)

- 어떤 부분에 함수적용을 깜빡할 수 있음.
- 모든 코드에 수동으로 함수를 적용해야됨.
=> 함수를 자동으로 만들어 줄 수 있으면 좋겠다.
=> **정형화된 코드를 함수로 만들어줌** = **일반화된** => **패턴이나 원칙을 코드로 만들 수 있음**
고차함수 행동을 새로운 함수로 감싸 실행을 미룰 수 있도록한다.
> 함수를 리턴하는 함수팩토리 같은 느낌
```js
function wrapLog(f) {
return (arg) => {
try {
f(arg);
} catch (e) {
log(e);
}
};
}
```

## 고차함수 장단

- 장 : 정형화된 일반화된 함수들로 중복을 줄일 수 있음.
- 단 : 일반화된 코드는 직관이 떨어져 보임 => 가독성이 떨어 질 수 있음

따라서 아래 내용을 고려해볼 것

- 코드가 더읽기 쉬운지
- 얼마나 많은 중복을 없애는지
- 코드가 무엇을하는지 문맥파악이 쉬운지

0 comments on commit 3316aaa

Please sign in to comment.