오늘 읽은 범위
- 6장 객체와 자료 구조
책에서 기억하고 싶은 내용들
변수를 비공개(private)으로 정의하는 이유는 남들이 변수에 의존하지 않게 만들기 위해서, 변수 타입이나 구현을 마음대로 바꾸고 싶어서다.
자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다. 인터페이스나 조회/설정 함수만으로는 추상화가 이루어지지 않는다.
복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생기는데 이때는 클래스와 객체 지향 기법이 가장 적합하다.
새로운 자료 타입이 아니라 새로운 함수가 필요한 경우, 이때는 절차적인 코드와 자료 구조가 좀 더 적합하다.
객체는 자료를 숨기고 함수를 공개한다. 즉, 객체는 조회 함수로 내부 구조를 공개하면 안 된다. 클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다. - 디미터의 법칙
- 클래스C
- f가 생성한 객체
- f 인수로 넘어온 객체
- C 인스턴스 변수에 저장된 객체
자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스이다. 자료 전달 객체(DTO)라 한다. 좀 더 일반적인 형태는 빈 구조다.
결론
객체는 동작을 공개하고 자료를 숨긴다. 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉽지만, 기존 객체에 새 동작을 추가하지는 어렵다.
자료 구조는 별다른 동작 없이 자료를 노출한다. 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기 어렵다.
궁금한 내용
- 객체와 자료 구조
문동선의 블로그 :: Object VS Data structure (tistory.com)Clean Code 6장: "객체와 자료 구조" 정리 – JSYoo5B.Dev(); - 절차적 프로그래밍
- 디미터의 법칙
[OOP] 디미터의 법칙(Law of Demeter) - MangKyu's Diary (tistory.com) - DTO(Data Transfer Object)
- Bean 구조
자바 빈(Java Bean)이란 무엇인가? (자바 빈 예제) (plusblog.co.kr)
'TIL > Clean Code' 카테고리의 다른 글
TIL #06 형식 맞추기 (0) | 2022.05.01 |
---|---|
TIL #05 주석 (0) | 2022.04.29 |
TIL #04 함수 (0) | 2022.04.27 |
TIL #03 의미 있는 이름 (0) | 2022.04.24 |
TIL #02 깨끗한 코드 (0) | 2022.04.23 |