Skip to content
Merged
Show file tree
Hide file tree
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
36 changes: 36 additions & 0 deletions ch08-기능_이동/박진수.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 기능 이동
### 반복문 리팩토링에는 2가지가 있다고 한다.
1. 각각의 반복문이 단 하나의 일만 수행하도록 보장하는 반복문 쪼개기
2. 반복문을 완전히 없애버리는 반복문을 파이프라인으로 바꾸기

## 문장을 함수로 옮기기
문장들을 함수로 옮기려면 그 문장들이 피호출 함수의 일부라는 확신이 있어야 한다.
### 절차
- 반복 코드가 함수 호출 부분과 멀리 떨어져 있다면 문장 스랑이드하기를 적용해 근처로 옮긴다.
- 타깃 함수를 호출하는 곳이 한 곳 뿐이면, 단순히 소스 위치에서 해당 코드를 잘라내어 피호출 함수로 복사하고 테스트한다.
- 호출자가 둘 이상이면 호출자 중 하나에서 '타깃 함수 호출 부분과 그 함수로 옮기려는ㄴ 문장들을 함께' 다른 함수로 추출한다. 추출한 함수에 기억하기 쉬운 임시 이름을 지어준다.
- 다른 호출자 모두가 방금 추출한 함수를 사용하도록 수정한다.
- 모든 호출자가 새로운 함수를 새용하게 되면 원래 함수를 새로운 함수 안으로 인라인한후 제거한다.
- 함수 이름 바꿔주기 (더 나은 이름이 있다면)

## 문장 슬라이드하기
- 변수 선언 위치를 해당 변수를 사용하는 곳 근처로 옮긴다.
### 절차
- 코드 조각을 이동할 목표 위치를 찾는다. 코드 조각이 원래 위치와 목표 위치 사이의 코드들을 훑어보면서, 조각을 모으고 나면 동작이 달라지는 코드가 있는지 살핀다.
- 코드 조각을 원래 위치에서 잘라내어 목표 위치에 붙여 넣는다.
- 테스트한다.

## 반복문 쪼개기
- 종종 반복문 하나에서 두가지 일을 수행하는 모습을 보게 된다.
- 그저 두 일을 한꺼번에 처리할 수 있다는 이유에서 말이다.
- 하지만 이렇게 하면 반복문을 수정해야 할 때마다 두 가지 일 모두를 잘 이해하고 진행해야 한다.
- 반대로 각각의 반복문으로 분리해두면 수정할 동작 하나만 이해하면 된다.
- 반복문을 두 번 실행해야 하므로 이 리팩터링을 불편해하는 프로그래머도 많다.
### 절차
- 반복문을 복제해 두 개로 만든다.
- 반복문이 중복되어 생기는 부수효과를 파악해서 제거한다.
- 테스트한다.
- 완료됐으면, 각 반복문을 함수로 추출할지 고민해본다.

## 반복문을 파이프라인으로 바꾸기
- 그저 반목문을 조건을 처리하기 보다는 파이프라인으로 바꾸는 것이 더 이해하기 쉽다. (map, filter)
9 changes: 9 additions & 0 deletions ch09-데이터_조직화/박진수.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 데이터 조직화
- 하나의 값이 여러 목적으로 사용된다면 혼란과 버그를 낳는다. 그러니 이런 코드를 발견하면 변수 쪼개기글 적용해 용도별로 분리하자.

## 매직 리터럴 바꾸기
- 매직 리터럴이란 소스 코드에 등장하는 일반적인 리터럴 값을 말한다.
### 방법
1. 상수를 선언하고 매직 리터럴을 대입한다.
2. 해당 리터럴이 사용되는 곳을 모두 찾는다.
3. 찾은 곳 각각에서 리터럴이 새 상수와 똑같은 의미로 쓰였는지 확인하여, 같은 의미라면 상수로 대체한 후 테스트한다.