이 영역을 누르면 첫 페이지로 이동
codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

페이지 맨 위로 올라가기

codesche's blog

chap06-객체와 자료구조

  • 2023.03.24 14:15
  • Study Cafe/Clean Code 스터디

목차

  1. 자료구조 VS 객체
  2. 디미터의 법칙
  3. DTO
  4. Active Record

1. 자료구조 vs 객체

image

○ 예시 - Shape
image

image

상황에 맞는 선택을 하면 된다

  • 자료구조를 사용하는 절차적인 코드는 기본 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
  • 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다.
  • 객체지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
  • 객체지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.

2. 디미터의 법칙

image

클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다

  • 클래스 C
  • 자신이 생성한 객체
  • 자신의 인수로 넘어온 객체
  • C 인스턴스 변수에 저장된 객체

디미터의 법칙에 어긋나는 상황
image

3. DTO

○ DTO(Data Transfer Object) = 자료구조

다른 계층 간 데이터를 교환할 때 사용

  • 로직 없이 필드만 갖는다.
  • 일반적으로 클래스명이 Dto(or DTO)로 끝난다.
  • getter/setter를 갖기도 한다.
  • Java Beans : 데이터 표현이 목적인 자바 객체
    • 멤버 변수는 private 속성이다.
    • getter와 setter를 가진다.

4. Active Record

image

○ Active Record = 자료구조

Database row를 객체에 맵핑하는 패턴

  • 비즈니스 로직 메서드를 추가해 객체로 취급하는 건 바람직하지 않다.
  • 비즈니스 로직을 담으면서 내부 자료를 숨기는 객체는 따로 생성한다.
  • 하지만 객체가 많아지면 복잡하고, 가까운 곳에 관련 로직이 있는 것이 좋으므로 현업에서는 Entity에 간단한 메서드를 추가해 사용한다.

○ Active Record vs Data Mapper

Active Record

image

  • 객체가 row를 담을 뿐 아니라 database에 대한 접근을 포함한다.
  • Person의 속성을 담을 뿐 아니라, 생성 수정도 객체 안에서 수행할 수 있다.
  • 사례 - Ruby on rails

Data Mapper

image

  • row를 담는 객체와 database에 접근할 수 있는 객체가 분리되어 있다.
  • Person은 값만 담고 있고, 생성, 수정 등 액션은 Person Mapper에서 담당한다.
  • 사례 - Hibernate

'Study Cafe > Clean Code 스터디' 카테고리의 다른 글

chap08-경계  (0) 2023.03.28
chap07-오류 처리  (0) 2023.03.24
chap05-형식 맞추기  (0) 2023.03.22
chap04-코드를 보조하는 주석  (0) 2023.01.30
ch03-함수  (1) 2023.01.30

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • chap08-경계

    chap08-경계

    2023.03.28
  • chap07-오류 처리

    chap07-오류 처리

    2023.03.24
  • chap05-형식 맞추기

    chap05-형식 맞추기

    2023.03.22
  • chap04-코드를 보조하는 주석

    chap04-코드를 보조하는 주석

    2023.01.30
다른 글 더 둘러보기

정보

codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

  • codesche's blog의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (76)
    • Algorithm (15)
      • 백준 (3)
      • 프로그래머스 (10)
      • inflearn 알고리즘(Java) (2)
    • 블로그소개 (1)
    • Back-End (11)
      • Java (10)
      • SpringBoot (1)
    • Database (2)
      • MySQL (0)
      • MariaDB (1)
      • Redis (0)
      • 개념, 이론 (1)
    • Front-End (0)
      • html, css, javascript (0)
    • Git (2)
    • 알고리즘 지식 (11)
      • 자료구조 (11)
    • Study Cafe (21)
      • 기술면접 (6)
      • Clean Code 스터디 (14)
      • CS 스터디 (0)
      • 개발용어 (1)
    • 주간 에세이 (10)
    • DevOps (3)
      • 배포, Front&Back 연동 (1)
      • AWS (0)
      • Docker (1)
      • 이론 (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 자바 기초
  • 자바 변수
  • git commit
  • 자료구조
  • 개발자 현실
  • 주간에세이
  • java
  • 클린코드

나의 외부 링크

정보

The Code의 codesche's blog

codesche's blog

The Code

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © The Code. Designed by Fraccino.

티스토리툴바