diff --git "a/ch08-\352\270\260\353\212\245_\354\235\264\353\217\231/\353\260\225\354\247\204\354\210\230.md" "b/ch08-\352\270\260\353\212\245_\354\235\264\353\217\231/\353\260\225\354\247\204\354\210\230.md" new file mode 100644 index 0000000..2e3a5e6 --- /dev/null +++ "b/ch08-\352\270\260\353\212\245_\354\235\264\353\217\231/\353\260\225\354\247\204\354\210\230.md" @@ -0,0 +1,36 @@ +# 기능 이동 +### 반복문 리팩토링에는 2가지가 있다고 한다. +1. 각각의 반복문이 단 하나의 일만 수행하도록 보장하는 반복문 쪼개기 +2. 반복문을 완전히 없애버리는 반복문을 파이프라인으로 바꾸기 + +## 문장을 함수로 옮기기 +문장들을 함수로 옮기려면 그 문장들이 피호출 함수의 일부라는 확신이 있어야 한다. +### 절차 +- 반복 코드가 함수 호출 부분과 멀리 떨어져 있다면 문장 스랑이드하기를 적용해 근처로 옮긴다. +- 타깃 함수를 호출하는 곳이 한 곳 뿐이면, 단순히 소스 위치에서 해당 코드를 잘라내어 피호출 함수로 복사하고 테스트한다. +- 호출자가 둘 이상이면 호출자 중 하나에서 '타깃 함수 호출 부분과 그 함수로 옮기려는ㄴ 문장들을 함께' 다른 함수로 추출한다. 추출한 함수에 기억하기 쉬운 임시 이름을 지어준다. +- 다른 호출자 모두가 방금 추출한 함수를 사용하도록 수정한다. +- 모든 호출자가 새로운 함수를 새용하게 되면 원래 함수를 새로운 함수 안으로 인라인한후 제거한다. +- 함수 이름 바꿔주기 (더 나은 이름이 있다면) + +## 문장 슬라이드하기 +- 변수 선언 위치를 해당 변수를 사용하는 곳 근처로 옮긴다. +### 절차 +- 코드 조각을 이동할 목표 위치를 찾는다. 코드 조각이 원래 위치와 목표 위치 사이의 코드들을 훑어보면서, 조각을 모으고 나면 동작이 달라지는 코드가 있는지 살핀다. +- 코드 조각을 원래 위치에서 잘라내어 목표 위치에 붙여 넣는다. +- 테스트한다. + +## 반복문 쪼개기 +- 종종 반복문 하나에서 두가지 일을 수행하는 모습을 보게 된다. +- 그저 두 일을 한꺼번에 처리할 수 있다는 이유에서 말이다. +- 하지만 이렇게 하면 반복문을 수정해야 할 때마다 두 가지 일 모두를 잘 이해하고 진행해야 한다. +- 반대로 각각의 반복문으로 분리해두면 수정할 동작 하나만 이해하면 된다. +- 반복문을 두 번 실행해야 하므로 이 리팩터링을 불편해하는 프로그래머도 많다. +### 절차 +- 반복문을 복제해 두 개로 만든다. +- 반복문이 중복되어 생기는 부수효과를 파악해서 제거한다. +- 테스트한다. +- 완료됐으면, 각 반복문을 함수로 추출할지 고민해본다. + +## 반복문을 파이프라인으로 바꾸기 +- 그저 반목문을 조건을 처리하기 보다는 파이프라인으로 바꾸는 것이 더 이해하기 쉽다. (map, filter) \ No newline at end of file diff --git "a/ch09-\353\215\260\354\235\264\355\204\260_\354\241\260\354\247\201\355\231\224/\353\260\225\354\247\204\354\210\230.md" "b/ch09-\353\215\260\354\235\264\355\204\260_\354\241\260\354\247\201\355\231\224/\353\260\225\354\247\204\354\210\230.md" new file mode 100644 index 0000000..a34eb71 --- /dev/null +++ "b/ch09-\353\215\260\354\235\264\355\204\260_\354\241\260\354\247\201\355\231\224/\353\260\225\354\247\204\354\210\230.md" @@ -0,0 +1,9 @@ +# 데이터 조직화 +- 하나의 값이 여러 목적으로 사용된다면 혼란과 버그를 낳는다. 그러니 이런 코드를 발견하면 변수 쪼개기글 적용해 용도별로 분리하자. + +## 매직 리터럴 바꾸기 +- 매직 리터럴이란 소스 코드에 등장하는 일반적인 리터럴 값을 말한다. +### 방법 +1. 상수를 선언하고 매직 리터럴을 대입한다. +2. 해당 리터럴이 사용되는 곳을 모두 찾는다. +3. 찾은 곳 각각에서 리터럴이 새 상수와 똑같은 의미로 쓰였는지 확인하여, 같은 의미라면 상수로 대체한 후 테스트한다. \ No newline at end of file