클린 코드 Assignment #09 [6장. 객체와 자료구조]

Ellie·2022년 5월 3일
0

클린코드

목록 보기
8/11

TIL (Today I Learned)

2022.05.03

오늘 읽은 범위

6장. 객체와 자료구조 (118p ~ 128p)

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

오늘은 이 장을 이해하는데 clean-code-javascript의 도움을 많이 받았다. 안봤으면 자바로 된 예시 때문에 더욱 이해하기가 힘들었을 것 같다. 일단 자바스크립트는 private이나 public키워드가 없기 때문에 전역스코프와 지역스코프로 그 개념을 이해했다.

  • 자료 추상화

    • 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추려면 추상화가 필요하다! 그저 (형식 논리에 치우쳐) 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 시용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.

    • 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이뤄지지 않는다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

  • 자료/객체 비대칭

  • 디미터 법칙

    • 기차 충돌
    • 잡종 구조
    • 구조체 감추기
  • 자료 전달 객체

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

솔직히 이번 장은 클래스를 잘 사용해 본 적도 없고, 어려운 용어도 많이 나와서 가장 읽기 어려웠다. 자바스크립트에서도 ES6부터 클래스가 추가된지 몇년 되지 않았고, 웬만하면 오브젝트와 함수로 처리해서 클래스를 그렇게 다뤄보지는 않았던 것 같다...

다만 추상화 추상화를 말하며 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스라는 문장에 엘리의 드림코딩 자바스크립트 강좌에서 들었던 이야기가 생각났다.

커피 자판기를 클래스라고 가정하면, 커피의 개수동전을 넣는 행위, 커피를 만드는 행위는 클래스의 프로퍼티다. 그런데, 만약 사용자가 커피의 개수를 -1로 설정한다면 어떻게 될까? 또 다른 외부인이 커피의 개수를 맘대로 바꿔버린다면? 그렇기 때문에 getter와 setter를 사용하며, private 하게 만드는 것이라고 말한다. 사용자는 -1로 설정했지만 내부 setter함수로 0을 만들어주는 것이다. 조회함수와 설정함수를 감춰야 한다는 표현에서 갑자기 이 내용이 생각났다.

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

0개의 댓글