클린 코드 Assignment #14 [10장. 클래스]

Ellie·2022년 5월 11일
0

클린코드

목록 보기
11/11

TIL (Today I Learned)

2022.05.10 ~ 2022.05.11

오늘 읽은 범위

10장. 클래스 (172p ~ 191p)

클래스와 오브젝트란?

자바스크립트에서 클래스는 자바같은 다른 프로그래밍 언어와 달리 비교적 최근에 도입되었다.

그러니까 클래스는 데이터가 전혀 들어있지 않은 템플릿 같은 존재고, 클래스를 이용해 실제 데이터를 넣으면 오브젝트가 된다. 그러니까 클래스라는 안에 데이터를 넣어 각각의 인스턴스들을 만들어낼 수 있는 것이다.

class Person {
  // constructor
  costructor(name, age) {
    this.name = name;
    this.age = age;
  }
  // methods
  speak() {
    console.log("hello");
  }
}

클래스 챕터를 읽으면서 갑자기 예전에 유튜브 엘리의 드림코딩에서 설명한 캡슐화, 객체 지향 언어에 대해 예시가 갑자기 생각났다.

자판기를 클래스라면,
커피의 개수와 동전을 넣고 커피를 만드는 프로퍼티가 있을 것이다.

그런데 실수로 커피의 개수를 -1로 설정하는 사용자가 있을 수 있다. 개수가 -1이라는 건 있을 수 없고 명백한 실수다. 그런 경우를 위해 setter함수를 이용해서 내부적으로 0으로 변경해주는 함수를 만드는 것이다. 이렇게 getter와 setter로 코드를 방어할 수 있다.

또, 다른 외부인이 함부로 커피의 개수를 수정하면 어떻게 될까? 그렇기 때문에 private하게 만들어주는 것이다.

책에서 기억하고 싶은 내용을 써보세요.

클래스 체계

  • 클래스는 작아야 한다.
    • 클래스를 만들 때 첫 번째 규칙은 크기다. (...중략) 단지, 클래스를 설계할 때도, 함수와 마찬가지로, '작게'가 기본 규칙이라는 의미다. (172p)
  • 단일 책임 원칙
    • 단일 책임 원칙(SRP)은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미다. (175p)
  • 응집도
    • 클래스는 인스턴스 변수 수가 작아야 한다. 각 클래스 메서드는 클래스 인스턴스 변수를 하나 이상 사용해야 한다. 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

오늘은 특히 노마드 코더 유튜브에서 객체 지향 프로그래밍 영상도 보고, 또 엘리의 드림코딩 자바스크립트 클래스 영상도 보면서 클래스에 대한 개념부터 다시 공부했던 것 같다.

또 클래스 챕터는 클린코드 책보다는 깃헙에 있는 자바스크립트 버전 클린코드를 보며 이해를 많이 했던 것 같다.
clean-code-javascript

  • 상속보단 조합(composition)을 사용하세요
  • 메소드 체이닝을 이용하세요

등등 더 많은 것을 이해할 수 있었던 것 같다!

그러니까 일단은 클래스를 읽고 한번에 이해할 수 있는지, 단일 책임 원칙을 지키고 있는지 등등을 잘 파악해보아야겠다.

profile
정말로 아는 것인지 항상 의심하기

0개의 댓글