반응형
TIL (Today I LeTIL (Today I Learned)
2022.03.01
오늘 읽은 범위
6장. 객체와 자료구조
책에서 기억하고 싶은 내용을 써보세요.
- 구현을 감추려면 추상화가 필요하다. (p.119)
- 그저 조회 함수(Getter)와 설정 함수(Setteer)로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. (p.119)
- 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. (p.119)
- 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. (p.119)
- 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다. (p.122)
- 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다. (p.122)
- DTO (Data Transfer Object, 자료 전달 객체)는 유용한 구조체다. 특히 데이터베이스와 통신하거나 소켓에서 받은 메시지의 구문을 분석할 때 유용하다. (p.126)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- '분별 있는 프로그래머는 모든 것이 객체라는 생각이 미신임을 잘 안다. 때로는 단순한 자료 구조와 절차적인 코드가 가장 적합한 상황도 있다.'라는 문구가 있었다. 세상에 모든 것은 객체라는 문장을 종종 보았다. 그것이 당연하다고 여겼는데, 막상 내가 현재 공부하는 스프링 부트 프로젝트에서 뷰(템플릿 엔진)에서 컨트롤러로 데이터를 전송할 때 DTO를 사용하고 있다는 것을 떠올렸다. 무의식적으로 그냥 자연스럽게 자료구조를 사용하고 있던 것이다. 코드를 작성할 때 좀 더 개념을 명확히 알고, 의식하며 지금 내가 무엇을 하고 있는지 늘 상기해야겠다.
- 어설프게 자료 구조 반, 객체 반을 섞어놓으면 단점만 모아 놓는 것이다. 그러므로 어중간한 구조 보다는 확실하게 구조를 정해야 한다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 디미터 법칙은 잘 알려진 휴리스틱으로, 모듈은 자신이 조작하는 객체의 속 사정을 몰라야 한다는 법칙이다.
- 결합도와 의존성에 관련된 법칙이다. 결합도와 의존성에 관련있으니 당연히 캡슐화하고도 관련이 있다. 객체지향 프로그래밍은 객체끼리 협력을 위해 의사소통하는 메시지가 중요하지 객체가 어떤 데이터를 가지고 있는지 중요하지 않다. 객체는 상대 객체가 내부에서 어떤 일을 하는지 몰라야 한다. 즉 협력을 위해 메시지를 보내면 요청한 값이 돌아오는 것만 알고 있으면 된다. 이러면 객체 간의 의존성이 적어진다. 알다시피 의존성이 적으면 테스트 코드 작성도 쉽고, 리팩토링도 쉬워진다.
- 여러 개의 점, 도트(.) ex method(member.name) 이런 구조를 많이 사용하지 말라고 한다.
- 즉 객체지향스럽게 객체를 넘겨야 한다. ex(method(member);
반응형
댓글