객체와 자료구조로 데이터 표현하기
목차
1. 자료구조 vs 객체
2. 객체 - 디미터 법칙
3. DTO
4. Active Record
1. 자료구조 vs 객체
자료구조(Data Structure) | 객체(Object) |
데이터 그 자체 | 비즈니스 로직과 관련 |
자료를 공개한다. | 자료를 숨기고, 추상화한다. 자료를 다루는 함수만 공개한다. |
변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다.(getter, setter) | 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조잘할 수 있다. |
절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 함수를 고쳐야 한다.
객체지향 코드는 새로운 클래스를 추가하기 쉽다. 하지만 함수를 추가해야 한다.
상황에 맞는 선택을 한다.
- 자료구조를 사용하는 절차적인 코드는 기본 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
- 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다.
- 객체지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
- 객체지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.
2. 객체 - 디미터 법칙
내 친구만 호출하지 내 친구의 친구까지 호출하면 안된다. 연쇄작용이 이어지기 때문에
휴리스틱 : 경험에 기반하여 문제를 해결하기 위해 발견한 방법 의사결정을 단순화하기 위한 법칙들
- 경험적으로 만들어낸 법칙 ex) Clean Code
기차 충돌 : 디미터의 법칙에 어긋나는 상황
3. DTO(Data Transfer Object)
* 자료구조
다른 계층 간 데이터를 교환할 때 사용
4. Active Record
* 자료구조
Database row를 객체에 맵핑하는 패턴
- 비즈니스 로직 메서드를 추가해 객체로 취급하는 건 바람직하지않다.
- 비즈니스 로직을 담으면서 내부 자료를 숨기는 객체는 따로 생성한다.
- 객체가 많아지면 복잡하고, 가까운 곳에 관련 로직이 있는 것이 좋으므로 현업에서는 Entity에 간단한 메서드를 추가해서 사용한다.
'Book > Clean Code' 카테고리의 다른 글
[Clean Code] Chapter 08 (0) | 2022.03.20 |
---|---|
[Clean Code] Chapter 07 (0) | 2022.03.17 |
[Clean Code] Chapter 05 (0) | 2022.03.12 |
[Clean Code] Chapter 04 (0) | 2022.03.12 |
[Clean Code] Chapter 03 (0) | 2022.03.09 |