티스토리 뷰
수업 들으며 메모 하듯이 작성한 글이라 정리가 안되어 있을수도 있습니다.
DI 의 목적?
- 느슨하게 디커플링하기 위해서, 작은놈이 큰놈에게 주입시키면 된다 라고 생각
- 데코레이터 - DI(Denpendency Injection)
- 데코레이터는 호출 됐을때, 바로 실행됨
- DTO : 데이터를 객체화로 변환해서 보내는것
- VO : value 를 가지고있는 객체
- 리액트 : MVVM
- 리액트 라우터 : controller
- 모듈 : 하나의 컨텍스트를 나눈것
- corepack : nodev16 이상이면 같이 깔림
- corepack enable ⇒ 그래야 pnpm 사용가능
- prepare pnpm
NestJS
- jest—coverage : 높을수록 좋음/ 80% 이상 이런식으로
- NestFactory : Factory pattern
- 싱글톤 : readonly, 오직 혼자만 볼수 있음
- RouterExplorer : Map(key,value)
- watch 안걸어서 계속 돌지 않고 있음
import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() //첫번째 네임스페이스 export class AppController { constructor(private readonly appService: AppService) {} @Get() //뒤에 오는 링크 getHello(): string { return this.appService.getHello(); } }
객체지향 설계
- 비즈니스로직 : 서비스 영역에서 calcTax(price) 부가세 계산이라는 비즈니스 로직을 구현
- 도메인 영역 : 나혼자 다른 레이어의 의존을 하지않음, 독립적 => 유저 목록 달라
- 인터페이스 영역 : 컨트롤러
- 코딩은 탑다운(topdown) 방식으로 ⇒ end to end(e2e 테스트) ⇒ 보통 인터페이스까지만 짜는데 인프라까지는 짜면 좋다
- 개방폐쇄 법칙 : 비순수함수로 짜지말자
- 리스코프 치환 법칙 : covarient
- ISP : 데이터베이스 정규화
- ⇒ 처음부터 확장성을 고려해서 짜자
- ⇒ 보통 인터페이스까지만 짜는데 인프라까지 짜면 좋다
- nest 는 이벤트 루프로 타이머단계 ⇒ 대기 콜백 단계 ⇒ 유휴,준비단계 .. 이런식으로 들어가게됨
- 객체지향 설계 원칙 #SOLID
- SRP (단일 책임 원칙, Single Responsibility) : 객체는 단 하나의 책임만 가져야 한다.
- OCP (개방-폐쇄 원칙, Open-Closed) : 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.
- LSP (리스코프 치환 원칙, Liskov Substitution) : 상속받은 하위 클래스는 언제나 상위클래스로 교체 가능하다.
- ISP (인터페이스 분리원칙, Interface Segregation) : 클라이언트는 미사용 메서드와 의존관계를 맺으면 안된다.
- DIP (의존역전 원칙, Dependency Inversion Principle) : 의존 관계를 맺을 때, 변화하기 어려운 것에 의존한다