리팩터링 2판 7장 정리

이종호·2022년 6월 4일
0

Refactoring

목록 보기
2/4

7장.. 가장 어려웠다.

레코드 캡슐화하기와 컬레션 캡슐화하기, 기본형을 객체로 바꾸기가 왜 이런 식으로 바뀌어야 하는 아직도 잘 모르겠다.

그 이후는 좀 쉬운 것 같다.

1. 레코드 캡슐화하기

여기서 "가변 데이터를 저장하는 용도로는 레코드보다 객체를 선호나는 편이다"에서
객체 = 클래스구조 라 봐도 되는건지?

캡슐화란, 접근을 제어한다는 뜻인가
아님 접근의 구조를 여러 처리르 통해 일어날 수 있는 일인가?

레코드 구조는 2가지
1. 이름을 노출하는 형태
2. 내가 원하는 이름을 쓰는 형태

이름을 노출한다 -> js에서 그냥 Object

{
  id: "abc@naver.com",
  pw: "EWQRJHEW@#KSDACLD(@LC#@%JKL"
}

내가 원하는 이름을 쓰는 형태 -> 클래스

class Account {
  #id
  #pw
  constructor(data) {
    this.#id = data.id;
    this.$pw = data.pw;
  }
  
  get loginId() {return this.#id;}
  get loginPw() {return this.#pw;}
}

근대 왜 여기서 해시, 맵, 해시맵등이 2번째형태에 해당되는지 모르겠다. 첫 번째아닌가?

첫 번째 예시에서
getRawDataOfOrganization(){}이라는 코드가 꼭 필요했는지 모르겠다.
오히려 단계가 더 복잡해진 느낌..

변수 캡슐화란 왜 하는 것일까?
... 더블 디스 패치..?

2. 컬렉션 캡슐화하기

레코드 캡슐화하기와 컬렉션 캡슐화하기의 차이는 뭘까?
내가 보기엔, 둘다 클래스화인데

레코드 캡슐화는 데이터를 클래스의 필드로 만드는 것에 중점을 두었다면,
컬렉션 캡슐화는 함수를 클래스의 메서드로 만드는 것에 중점이 있다고 보인다.

.. 아닌거 같기도하고..
레코드와 컬렉션의 차이란..?

3. 기본형을 객체로 바꾸기

취향 차이도 있겠지만, 진짜
get priority()를
get priorityString()으로 바꾸는 것은 이해가 잘 안된다.

4. 임시변수를 질의함수로 바꾸기

-> 임시변수는 클래스의 getter로 바꾸기
왜??
솔직히.. 잘 모르겠다

profile
코딩은 해봐야 아는 것

0개의 댓글