8. 생성자를 팩터리 함수로 바꾸기
생성자는 객체를 초기화한다. 생성자에는 제약이 몇가지 있는데,
- 생성자의 이름은 고정되어 있다.
- 서브클래스의 인스턴스나 프락시를 반환할 수 없다.
- 생성자를 호출하려며 특별한 연산자(주로 new)를 사용해야한다.
팩터리 함수에는 이러한 제약이 없다.
*팩터리 함수란? 객체를 반환하는 함수이다.
// 생성자
const engineer = new Employee(document.engineer, "E");
// 팩터리 함수
const engineer = createEngineer(document.engineer);
function createEngineer(name){
return new Employee(name, "E");
}
9. 함수를 명령으로 바꾸기 (↔️ 명령을 함수로 바꾸기)
*명령(객체)란? 함수를 그 함수만을 위한 객체 안으로 캡슐화한 것이다. 즉, 함수를 함수 자신을 포함한 클래스로 만든 것이다. 명령은 함수보다 유연하고 일급 함수처럼 표현가능하다.
*일급 함수란? 일반 변수처럼 다룰 수 있는 함수를 말한다. 매개변수를 담거나, 함수를 반환하거나, 변수에도 할당할 수 있다. 자바스크립트는 일급 함수를 가진 언어이다.
명령객체 예시)
class Scorer {
constructor(){}
execute(){
this._result = 0;
this._level = 0;
}
}
10. 명령을 함수로 바꾸기 (↔️ 함수를 명령으로 바꾸기)
명령은 사실 함수를 하나 호출할 뿐이다. 로직이 크게 복잡하지 않다면, 함수를 쓰는 것이 좋다.
11. 수정된 값 반환하기
데이터가 어떻게 수정됐는지 추적하는 일은 어렵다. 추적을 쉽게 하기 위해서는 변수를 하나 고정해서 값이 수정되었음을 알려주는 것이 좋다.
예시)
function calculateSomething(data){
let result = 0;
for(let i = 0; i < data.length; i++){
result += data[i].number;
}
return result;
}
12. 오류 코드를 예외로 바꾸기
예외는 정확히 예상 밖의 동작일 때만 쓰여야한다. 예외를 던지는 코드를 프로그램 종료 코드로 바꿔도 프로그램이 동작해야한다! (아마 C기반의 오래된 프레임워크를 쓰는 개발자라면 공감할 내용이라고 한다.)
'Today I Learned' 카테고리의 다른 글
운영체제와 정보기술의 원리1 컴퓨터 및 정보기술의 역사 (0) | 2022.01.04 |
---|---|
리팩터링 2판 챕터12 - 상속 다루기 (0) | 2021.12.29 |
리팩터링 2판 챕터11 - API 리팩터링(1) (0) | 2021.12.20 |
리팩터링 2판 챕터10 - 조건부 로직 간소화(2) (0) | 2021.12.20 |
리팩터링 2판 챕터10 - 조건부 로직 간소화(1) (0) | 2021.12.16 |