□ 좋은 코드란
- 논리가 간단해야 한다.
- 중복을 제거하고 표현을 명확하게 한다.
- 처음 보는 사람도 쉽게 이해하고 수정할 수 있어야 한다.
- 의존성을 최소화해야 한다.
- 새오룬 기능을 추가 하더라도 크게 구조의 변경이 없어야 한다.
※ 의존성이란?
위 코드에서 만약 consumer가 먹고싶은게 바뀐다면 우리는 chicken이 들어간 모든 코드를 수정해야 한다.
이러한 코드를 강하게 결합되어있다고 할 수 있다.
Interface를 활용하면 이러한 문제를 해결할 수 있다.
이러한 코드를 약하게 결합되어있다고 할 수 있다.
□ Ioc(설계 원칙)
ex) 음식을 맛있게 만들기 위한 원칙
- 신선한 재료 사용
- 요리 순서 지키기
- 음식 비율 맞추기
- 제어의 역전
- 이전 Consumer가 직접 Food를 만들어 먹었기 때문에 새로운 Food를 만들려면 코드 변경이 불가피 했다.
- 이를 개선하여 만들어진 Food를 Consumer에게 전달해주는 식으로 변경함으로써 Consumer는 코드변경 없이 Food를 먹을 수 있게 됐다.
- 위와 같은 상황을 Consumer -> Food에서 Food -> Consumer으로 제어의 흐름이 역전되었다고 한다.
□ DI(디자인 패턴)
ex) 음식의 레서피
- 의존성 주입
- 필드에 직접 주입
- 메서드(setter)를 통한 주입
- 생성자를 통한 주입
'Java & Spring > Spring' 카테고리의 다른 글
28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입) (0) | 2024.08.22 |
---|---|
26일차 - Spring강의(Entity, 영속성 컨텍스트) (0) | 2024.08.20 |
25일차 - Spring강의(3 Layer Architecture) (0) | 2024.08.19 |
21일차 - Spring강의(Spring MVC) (0) | 2024.08.12 |
21일차 - Spring강의(테스트 코드, lombok) (0) | 2024.08.12 |