CS/클린코드(cleancode)

6장. 객체와 자료구조

rachel_13 2022. 11. 6. 00:05

6-1. 자료 추상화

추상 인터페이스를 사용하여 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.

자료를 세세하게 공개하는 것보다는 추상적으로 개념을 표현하는게 더 좋다.

Best

public interface Vehicle {
    double getPercentFuelRemaining();
}

 

6-2. 자료/객체 비대칭

- 객체 : 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개
- 자료구조 : 자료를 그대로 공개하며 별다른 함수 제공x

 

서로 상반되는 특징을 가지고 있다.

객체는 기존 함수를 훼손하지 않으면서 새로운 클래스를 추가하기 쉬우나, 새로운 함수를 추가하기 어렵다.

(모든 클래스를 고쳐야 하기 때문)

자료구조는 기존 자료구조를 훼손하지 않으면서 새로운 함수를 추가하기 쉬우나, 새로운 자료구조를 추가하기 어렵다.

(모든 함수를 고쳐야 한다.)

 

→ 정리

새로운 자료 타입 이 필요하다? → 클래스, 객체 지향

새로운 함수 가 필요하다? → 절차적인 코드, 자료구조

 

 

6-3. 디미터 법칙

  • 클래스 C
  • f가 생성한 객체
  • f인수로 넘어온 객체
  • C 인스턴스 변수에 저장된 객체
  • 기차 충돌
  • 잡종 구조
    • 절반은 객체, 절반은 자료구조의 형태
  • 구조체 감추기

 

 

참고 글 : https://github.com/qkraudghgh/clean-code-javascript-ko#%EA%B0%9D%EC%B2%B4%EC%99%80-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0objects-and-data-structures

'CS > 클린코드(cleancode)' 카테고리의 다른 글

10장. 클래스 - 자바스크립트 클린코드  (0) 2022.11.20
7장. 오류 처리 - 자바스크립트 클린코드  (0) 2022.11.06
5장. 형식 맞추기  (0) 2022.10.30
3장. 함수  (0) 2022.10.30
2장. 의미 있는 이름  (0) 2022.10.30