자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 것이 좋다.
인터페이스나 조회/설정 함수만으로 추상화가 이루어지는 것은 아니다.
객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다.
객체는 추상화로 자료를 숨기고, 자료를 다루는 함수만 공개
자료구조는 자료를 그대로 공개하며 함수 없음
새로운 자료 타입이 필요하다면 클래스와 객체지향 기법 사용
새로운 함수가 필요하다면 절차적인 코드와 자료구조 사용
모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다.
// 디미터 법칙을 위반하는 코드
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
자료 전달 객체(자료 구조체)는 공개 변수만 있고 함수가 없는 클래스다.
일반적으로 bean 구조를 가지며, 비공개 변수를 조회/설정 함수로 조작한다.
활성 레코드