[Clean Code] 6. 객체와 자료구조

1

Clean Code

목록 보기
6/7
post-thumbnail

[Clean Code] 6. 객체와 자료구조

자료 추상화

  • 변수를 private으로 선언하더라도 각 값마다 get, set을 제공한다면 구현을 외부로 노출하는 셈
    -> 추상 인터페이스를 제공해 사용자가 구현을 모른 채 조작할 수 있어야
  • 자료를 세세하게 공개 X -> 추상적인 개념으로 표현

자료/객체 비대칭

  • 객체 클래스: 자료를 다루는 함수만 공개
  • 자료구조 클래스: 자료 그대로 공개, 별다른 함수 제공 X
  • 절차적인 코드: 기존 자료구조 변경 없이 새 함수를 추가하기 쉽다
  • 객체 지향 코드: 기존 함수 변경 없이 새 자료구조를 추가하기 쉽다
  • 분별 있는 프로그래머는 모든 것이 객체라는 생각이 미신임을 안다
    -> 때로는 절차적인 코드가 적합

디미터 법칙

  • 잘 알려진 휴리스틱
  • 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다
  • "클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 함"
    • 클래스 C
    • f가 생성한 객체
    • f 인수로 넘어온 객체
    • C 인스턴스 변수에 저장된 객체
  • 위 객체에서 허용된 메서드가 반환하는 객체의 메서드는 호출하면 X

자료 전달 객체

  • 자료구조 클래스의 전형적인 형태 = 공개 변수만 있고 함수가 없는 클래스
    = 자료 전달 객체(Data Transfer Object, DTO)
  • 흔히 데이터베이스에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로 변환하는 단계에서 가장 처음으로 사용하는 구조
  • bean 구조: 자료 전달 객체의 일반적인 형태
    • private 변수를 get/set 함수로 조작
  • 활성 레코드: 자료 전달 객체의 특수한 형태
    • private 변수를 get/set 함수로 조작
    • 대개 save나 find와 같은 탐색 함수 제공

결론

  • 새로운 자료 타입을 추가하는 유연성 필요 -> 객체 지향 코드 적합
  • 새로운 동작을 추가하는 유연성 필요 -> 절차적인 코드 적합
profile
Be able to be vulnerable, in search of truth

0개의 댓글