반응형

객체와 자료구조로 데이터 표현하기

 

목차

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에 간단한 메서드를 추가해서 사용한다.

 

 

 

728x90
반응형

'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

+ Recent posts