[CLEANCODE] 객체와 자료구조

2021. 10. 24. 00:50·CLEANCODE
728x90

자료구조 VS 객체

자료구조와 객체 사용은 상황에 맞게 선택해서 사용하면 됨

자료구조 객체
데이터 그 자체 비즈니스 로직과 관련
자료를 공개함 자료를 숨기고, 추상화, 자료를 다루는 함수만 공개
변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 해도 객체가 되는 것은 아님 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있음
  • 자료구조를 사용하는 절차적인 코드는 기본 자료구조를 변경하지 않으면서 새 함수를 추가하기 쉬움
  • 절차적인 코드는 새로운 자료구조를 추가하기 어려움, 모든 함수를 고쳐야함
  • 객체지향 코드는 기존 함수를 변경하지 않으면서, 새 클래스를 추가하기 쉬움
  • 객체지향 코드는 새로운 함수를 추가하기 어려움, 추가하려면 모든 클래스를 고쳐야함 '

 


객체 - 디미터의 법칙

모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙

https://blog.knoldus.com/the-law-of-demeter/

  • 휴리스틱 : 경험에 기반하여 문제를 해결하기 위해 발견한 방법, 의사결정을 단순화하기 위한 법칙
  • 기차충돌 :  디미터의 법칙에 어긋나는 상황 (ex. object.getChild().getContent().getItem().getTitle())
  • 디미터의 법칙은 오직 하나의 도트만을 사용하라는 말로 요약됨 (Stream은 위반한 케이스가 아님, 캡슐화는 그대로 유지되므로 문제가 없음, 객체 내부 구현이 노출되지 않는 것이 디미터의 법칙을 준수한 코드)
  • 디미터의 법칙은 자기자신, 메서드로 넘어온인자, 자신이 생성한 객체, 직접포함하고 있는객체만 메서드를 호출
  • 객체의 협력경로를 제한하라는 의미

DTO (Data Transfer Object) = 자료구조

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

  • 로직이 없음
  • Getter / Setter를 가짐
  • 멤버변수는 private 
  • 실무에서 많이 사용함
저작자표시

'CLEANCODE' 카테고리의 다른 글

[CLEANCODE] 경계  (0) 2021.10.27
[CLEANCODE] 형식맞추기  (0) 2021.10.24
[CLEANCODE] 주석  (0) 2021.10.23
[CLEANCODE] 함수  (0) 2021.10.23
[CLEANCODE] 의미있는 이름  (0) 2021.10.20
'CLEANCODE' 카테고리의 다른 글
  • [CLEANCODE] 경계
  • [CLEANCODE] 형식맞추기
  • [CLEANCODE] 주석
  • [CLEANCODE] 함수
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    SQL
    go
    splunk
    자바
    cleancode
    프로그래머스
    docker
    클린코드
    Spring
    ElasticSearch
    Kafka
    이펙티브 코틀린
    Elk
    java
    AWS
    엘라스틱서치
    코틀린
    JPA
    이펙티브코틀린
    IntelliJ
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[CLEANCODE] 객체와 자료구조
상단으로

티스토리툴바