Clean Code: 객체와 자료구조

jiffydev·2021년 5월 30일
0

Clean Code

목록 보기
5/13

1. 자료 추상화

  • 자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 것이 좋다.

  • 인터페이스나 조회/설정 함수만으로 추상화가 이루어지는 것은 아니다.

  • 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다.

2. 자료/객체 비대칭

  • 객체는 추상화로 자료를 숨기고, 자료를 다루는 함수만 공개

  • 자료구조는 자료를 그대로 공개하며 함수 없음

  • 새로운 자료 타입이 필요하다면 클래스와 객체지향 기법 사용

  • 새로운 함수가 필요하다면 절차적인 코드와 자료구조 사용

3. 디미터 법칙

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

  • 클래스의 메서드는 클래스 / 메서드가 생성한 객체 / 메서드 인수로 넘어온 객체 / 클래스 인스턴스 변수에 저장된 객체만 호출해야 한다.
// 디미터 법칙을 위반하는 코드
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
  • 한편 자료구조라면 디미터 법칙이 적용되지 않는다.

4. 자료 전달 객체

  • 자료 전달 객체(자료 구조체)는 공개 변수만 있고 함수가 없는 클래스다.

  • 일반적으로 bean 구조를 가지며, 비공개 변수를 조회/설정 함수로 조작한다.

  • 활성 레코드

    • 자료 전달 객체의 특수한 형태로, save, find 같은 탐색 함수도 제공한다.
    • 활성 레코드는 자료 구조로 취급하기 때문에 비즈니스 규칙 메서드를 추가해서는 안된다.
profile
잘 & 열심히 살고싶은 개발자

0개의 댓글