TIL (2022.02.01)
DAY 12
🔖 오늘 읽은 범위 : 6장, 객체와 자료구조(p.118 ~p.128)
😃 책에서 기억하고 싶은 내용을 써보세요.
- 자료 추상화 (p.119)
- 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.
- 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.
- 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게고민해야 한다. 아무 생각 없이
조회/설정 함수를 추가하는 방법이 가장 나쁘다.
- 자료/객체 비대칭 (p.122)
- 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은
객체 지향 코드에서 쉽다!
- 분별 있는 프로그래머는 모든 것이 객체라는 생각이 미신임을 잘 안다. 때로는 단순한 자료 구조와
절차적인 코드가 가장 적합한 상황도 있다.
- 디미터 법칙 (p.123 ~ 126)
- 자료 전달 객체 (p.126)
- 자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다.
- 이런 자료 구조체를 때로는 자료 전달 객체 (Data Transfer Object, DTO)라 한다.
- 흔히 DTO는 데이터베이스에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로
변환하는 일련의 단계에서 가장 처음으로 사용하는 구조체다.
- 결론 (p.128)
- 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.
- 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다.
🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 객체지향에 대해 공부하다 모든 걸 전부 객체지향스럽게 작성해야 하는 건가 라고 생각했는데 책 결론 부분에 각각 상황에 맞춰 적합한 것을 선택해야 한다는 것을 배웠다.
- DTO를 사용할 때 롬복 라이브러리를 사용해서 생각 없이 getter나 setter를 만들었다. 데이터베이스에서 읽어온 데이터를 곧바로 DTO에 설정하거나 DTO와 Entity 간 Convert가 필요한 상황에 각 라이브러리들이 getter/setter 메소드를 이용하여 DTO를 조작하기 때문이다. 따라서 라이브러리를 사용하려면 필수적으로 getter/setter를 만들어줘야 한다. 자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스라 했는데 대부분 라이브러리나 프레임워크가 빈(bean) 구조를 선택하고 있기에 내가 getter / setter를 만들고 있던거구나! 또또 생각없이 만들었네...
기록하신 TIL을 공유해주세요 - TIL 출석표
클린코드_스케쥴러_TIL 출석표 (노개북1기)
소감 3줄 요약
- 상황에 맞게 객체와 자료구조를 잘 사용하자.
- 객체한테 달라하지 말고 일을 시키자!
- 구현은 감추고 추상화를 하자.