[CleanCode] 클린코드 공부하기 - 6 - 객체와 자료구조

Date:

카테고리:

태그:

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

1. 자료구조 vs 객체

자료구조 겍체
데이터 그 자체 비지니스 로직과 관련
자료를 공개 자료를 숨기고 추상화
  • 자료구조
    • 자료구조 사용 시 절차적인 코드
    • 구조 변경 없이 새 함수 추가 쉽다
    • 새로운 자료 구조 추가가 어렵다 (모든 함수 수정 필요)
  • 객체 지향 코드
    • 기존 함수 변경 없이 새 클래스 추가 쉬움
    • 새로운 함수 추가 어려움 (모든 클래스 수정 필요)

2. 객체 - 디미터의 법칙

image

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

    • 클래스 C
    • 자신이 생성한 객체
    • 자신의 인수로 넘어온 객체
    • C 인스턴스 변수에 저장 된 객체
      // case 1) 객체일 경우 - 기차 출동 발생 (디미터의 법칙 위배)
      final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
      
      // case 2) 자료 구조일 경우 - 가능
      final String outputDir = ctxt.options.scratchDir.absolutePath;
        
      // case 3) getter를 사용 시 - 좋은 방법이 아님
      // getter를 통했을 뿐 값을 가져오는 것은 자료구조
      
      ctxt.getAbsolutePathOfScratchDirectoryOption();
      ctxt.getScratchDirectoryOption().getAbsolutePath();
        
      // case 4) 절대 경로로 가져오기
      // 겍체는 자료를 숨기고 자료를 다루는 함수만 공개
      BufferedOputputStream bos = ctxt.createScratchFileStream(classFileName);
    

3. DTO (Data Transfer Object)

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

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

CleanCode 카테고리 내 다른 글 보러가기

댓글 남기기