DAY 8
오늘의 책 읽기: 6장. 객체와 자료구조 까지
🤓 책에서 기억하고 싶은 내용
형식 논리에 치우쳐 조회 함수와 설정 함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. ... 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 119p
객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.
자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. ...
두 정의는 본질적으로 상반된다.
절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
디미터법칙: 클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야한다.
1. 클래스 C
2. f가 생성한 객체
3. f 인수로 넘어온 객체
4. C 인스턴스 변수에 저장된 객체
🥰 오늘의 소감
이 책을 읽기 전까지 자료구조와 객체에 대해 깊게 생각해본 적이 별로 없었다. 학교 수업을 통해 C의 struct라는 개념을 알게되어 당시 구조체를 많이 사용했었고 이후 클래스를 접하면서 클래스만 주로 사용했던 경험이 있다. 자료 구조와 객체를 구분해서 사용하려고 했던 적은 없었던 것 같다. 그저 막연하게 "객체 지향"이란 단어에 사로잡혀서 객체가 더 좋은 거 아닐까? 라고만 생각했다. 그러다보니 사실상 잡종 구조를 많이 활용했던 것 같다.
클래스 변수를 private으로 설정하고 get set 함수를 활용하여 사실상 내부 구조를 적나라하게 노출시킨 것이 너무 나의 모습이라 반성하게 되었다. 정말 "사이비 캡슐화"라는 말에 공감갔다. 너무나 뼈 때리는 말...
오늘의 3줄 요약
- 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.
- 객체 - 동작을 공개하고 자료를 숨긴다. 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기 쉽다.
- 자료 구조 - 동작 없이 자료를 노출한다. 기존 자료 구조에 새 동작을 추가하기 쉬우나, 기존 함수에 새 자료 구조를 추가하기 어렵다.
🤔 궁금한 내용
없음
'Clean Code' 카테고리의 다른 글
11, 12일차 TIL 단위 테스트 (0) | 2024.03.16 |
---|---|
9, 10일차 TIL 오류처리 (0) | 2024.03.14 |
7일차 TIL 형식 맞추기 (0) | 2024.03.10 |
5, 6일차 TIL 주석 (0) | 2024.03.07 |
3, 4일차 TIL 함수 (1) | 2024.03.05 |