4:45 -> A와 B가 의존이 되었을 때 A가 바뀌었다고 B까지 바뀌면 이것은 잘못됐다(의존관계에 대한 설명이 나옴)
단방향 최고
연관관계, 의존관계를 넣는 이유를 알아야 함
연관관계 = 탐색 가능성
패키지 사이의 의존성 사이클을 제거하라(사이클이 돌면 그것들은 하나의 패키지라 생각하라 중요!)
함께 생성되고 함께 삭제되는 객체들을 함께 묶어라
(1:12:00) 도메인 제약사항을 공유하는 객체들을 함께 묶어라
가능하면 분리하라
(1:14:00) 묶여있는것들은 객체로 접근하고 묶여있지않으면 ID로 접근하자
그룹은 트랙잭션/조회/비즈니스 제약의 단위
Validation logic같은 것들이 서로 묶여있지 않는 여러곳을 참조하여 검증을 해야 한다면 찢어내서 한 곳에 모아놓으면 한눈에 볼 수 있다.
1:27:00 : ID로 연결되어 있는 것들이 연쇄적으로 바뀌어야 할 때 쓸 수 있는
방법중 절차지향 로직
과 도메인 이벤트가 있다1:29:10(이건 이벤트 핸들러 써보고 알아보자)
정리 : 사이클을 끊는 법은
1. 중간객체를 만들자
2. 인터페이스나 추상 클래스를 만들어서 의존성 역전
3. 새로운 패키지를 추가하여 찢어내자(event handler를 쓸 때 사용한다고 한다 나중에 함 써보자)
https://www.youtube.com/watch?v=dJ5C4qRqAgA&ab_channel=%EC%9A%B0%EC%95%84%ED%95%9C%ED%85%8C%ED%81%AC
'클린코드 체크' 카테고리의 다른 글
만들때마다 체크하자(계속 업데이트 할 것) (0) | 2024.06.08 |
---|---|
리팩토링 실습 (0) | 2023.12.05 |
stream.toList와 stream.collect(toList)차이 (0) | 2023.12.02 |
좋은 코드 나쁜 코드 (0) | 2023.11.23 |
Optional.of, Optional.ofNullable 사용처 (0) | 2023.11.20 |