작성일 | 2023. 5. 23 |
범위 | Clean Code 도서, Chaper 10. 클래스 |
참고 자료 :
groom의 CLEAN CODE JAVASCRIPT
ES6의 클래스가 ES5의 함수보다 낫다?
CASE 1: 상속이 필요하다 ⇒ 클래스 사용
CASE 2: 크고 복잡한 객체가 필요하다 ⇒ 클래스 사용
CASE 3: 그 외 ⇒ 함수 사용
즉, 때에 따라 쓴다.
상속 안 하고 크지 않은 객체라면 함수를 사용한다.
메소드 체이닝 사용하기
ex. 클래스 내부에서 메소드 체이닝을 구현하기 위해 return this 를 덧붙이면 된다.
메서드 체이닝을 사용하면 객체를 반복해서 작성하지 않고, 코드가 매우 깔끔해진다!
- 체이닝 X 예
class Car {
constructor() {
this.make = 'Honda';
this.model = 'Accord';
this.color = 'white';
}
setMake(make) {
this.make = make;
}
setModel(model) {
this.model = model;
}
setColor(color) {
this.color = color;
}
save() {
console.log(this.make, this.model, this.color);
}
}
const car = new Car();
car.setColor('pink');
car.setMake('Ford');
car.setModel('F-150');
car.save();
- 체이닝 사용 예
class Car {
constructor() {
this.make = 'Honda';
this.model = 'Accord';
this.color = 'white';
}
setMake(make) {
this.make = make;
// 메모: 체이닝을 위해 this를 리턴합니다.
**return this;**
}
setModel(model) {
this.model = model;
// 메모: 체이닝을 위해 this를 리턴합니다.
**return this;**
}
setColor(color) {
this.color = color;
// 메모: 체이닝을 위해 this를 리턴합니다.
**return this;**
}
save() {
console.log(this.make, this.model, this.color);
// 메모: 체이닝을 위해 this를 리턴합니다.
**return this;**
}
}
const car = new Car()
**.setColor('pink')
.setMake('Ford')
.setModel('F-150')
.save();**
상속보다는 조합을 사용하기
조합
: 외부에 별도의 클래스를 만들고, 클래스 내부 메서드에 외부 클래스의 객체를 생성해 사용한 예시
상속
: 하나의 클래스를 extends해서 자식 클래스를 만들어 사용하는 것
- has-a 관계 (유저 → 급여정보) ⇒ 조합 (=유저는 급여정보에 의존한다.)
- is-a 관계 (체스말 → 폰) ⇒ 상속
- 기반 클래스의 코드를 다시 사용할 수 있을 때 ⇒ 상속
- 기반 클래스의 코드를 수정함으로써 파생클래스 전부를 수정하고 싶을 때 ⇒ 상속
HAS-A 관계 : 조합
IS-A 관계 : 상속
'Programming > 📚 Book Study' 카테고리의 다른 글
[Clean Code] 9. 단위테스트 (0) | 2023.06.05 |
---|---|
[Clean Code] 6. 객체와 자료구조 (0) | 2023.05.14 |
[Clean Code] 5. 형식맞추기 (code format) (0) | 2023.05.09 |
[Clean Code] 3. 함수 (함수 작성 규칙) (0) | 2023.05.09 |
[Clean Code] 2. 의미있는 이름 (변수명) (0) | 2023.05.09 |