| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- JavaScript
- 성수직장인
- Linux
- 개발자
- 상속
- 성수핫플
- 디자인패턴
- 헤드퍼스트디자인패턴
- 깨끗한코드
- docker
- 독서일지
- IntelliJ
- 직장인점심
- 클린코드
- 객체지향
- 오브젝트
- Java
- 직장인
- 성수
- DesignPattern
- 헤드퍼스트
- 독서
- 객체지향프로그래밍
- 주니어개발자
- 책너두
- 코딩
- JAVA개발자
- 책읽기
- 성수맛집
- 성수볼거리
- Today
- Total
런타임노트
[클린코드] 14일차. 123-131pg | 디미터 법칙, 예외처리 본문
14일차.
클린코드[3주차_화요일]
123-131pg
#요약
6. 객체와 자료구조
1) 자료 추상화
2) 자료/객체 비대칭
3) 디미터 법칙
- 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙
a. 기차 충돌
final String outputDir = stxt.getOptions().getScratchDir().getAbsolutePath();
- 여러 객체가 한 줄로 이어진 기차처럼 보이기 때문에 위와 같은 코드를 기차 충돌이라고 한다.
- 기차충돌 코드는 조잡하다.
- 위코드를 깨끗하게 하는 법
Options opts = ctxt.getOptions();
File scratchDir = opts.getScaratchDir();
final String outputDir = scratchDir.getAbsolutePath();
- 자료구조는 무조건 함수 없이 공개 변수만 포함하고 객체는 비공개 변수와 공개 함수를 포함한다면 좋다.
- 자료구조는 디미터 법칙을 논할 필요가 없다.
b. 잡종 구조
- 위와 같은 혼란 때문에 때때로 절반은 객체, 절반은 자료 구조인 잡종구조가 나온다.
c. 구조체 감추기
- 객체라면 뭔가를 하라고 말해야지, 속을 드러내면 안된다.
4) 자료 전달 객체
- 자료 구조체의 전형적 형태는 공개 변수만 있고 함수는 없는 클래스다.
- 이런 자료 구조체는 때로는 자료 전달 객체(Data Transfer Object, DTO)라고 한다.
a. 활성 레코드
- 활성 레코드는 DTO의 특수한 형태
- 활성 레코드는 데이터베이스 테이블이나 다른 소스에서 자료를 직접 변환한 결과다.
- 활성 레코드에 비즈니스 규칙 메서드를 추가해서 이런 자료 구조를 객체 로 취급하는 코드는 자료구조도 객체도 아닌 잡종구조다.
- 해결책은 활성구조를 자료구조로 취급한다.
5) 결론
- 객체는 동작을 공개하고 자료를 숨긴다.
- 어떤 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.
- 새로운 동작을 추가하는 유연성이 필요하면 자료구조와 절차적인 코드가 더 적합하다.
7. 오류처리
- 뭔가 잘못될 가능성은 항상 존재하고 그것을 바로 잡을 책임은 프로그래머들에게 있다.
- 우아하고 고상하게 오류처리하는 법
1) 오류 코드보다 예외를 사용하라
'책책책 책을 읽읍시다‼ ver.개발 > [ 클린코드 ]' 카테고리의 다른 글
| [클린코드] 16일차. 142-150pg | 경계처리 (0) | 2023.09.22 |
|---|---|
| [클린코드] 15일차. 132-141pg | 오류 처리 (0) | 2023.09.21 |
| [클린코드] 13일차. 111-122pg | 형식 맞추기, 객체와 자료구조 (2) | 2023.09.18 |
| [클린코드] 12일차. 103-110pg | 가로 형식 맞추기 (0) | 2023.09.16 |
| [클린코드] 11일차. 95-102pg | 형식 맞추기 (0) | 2023.09.15 |