Programming/📚 Book Study

[Clean Code] 10. 클래스

남남이루 2023. 6. 13. 00:45
작성일 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      관계 : 상속