Software Design
-
[OOP] Tell, Don't Ask(TDA) 원칙과 캡슐화Software Design 2022. 1. 18. 22:59
Tell, Don't Ask. 객체에게 데이터를 요구(Ask) 하지 말고, 객체에게 일을 시켜라(Tell) 정도로 해석할 수 있다. 객체 지향적 사고방식 원칙 중 하나인데, 특히 객체지향의 핵심인 캡슐화가 잘 이루어진 설계를 하기 위해서 탄생한 원칙이다. 다음 User 클래스를 통해 캡슐화가 이루어지지 않은 객체의 문제점을 알아보고, TDA 원칙을 통해서 캡슐화를 시켜보자. class User { public email: string; public age: number; public createdAt: Date; } 어떤 문제가 있을까? 어떤 비즈니스 로직을 수행할 때, 사용자의 나이가 20보다 작다면 오류가 나야 한다는 요구사항이 있다고 하자. User객체를 매개변수로 전달받는 서비스 메소드에 이 요구..
-
[OOP] DTO, Entity와 객체지향적 사고Software Design 2022. 1. 10. 20:47
express, mongoose 두 스택을 사용할 때는 DTO와 Entity를 사용하는 법은커녕 개념조차 깊게 이해하고 있지 못했다. 그러다가 Nest.js, TypeORM 스택을 이용해서 개발을 하다보니 DTO와 Entity에 대해 알게 되고, 객체지향이란 무엇일까를 생각하며 코드를 작성하는 방식이 바뀌고 있다. 계층형 아키텍처에서 Controller는 DTO로 변환된 요청 body를 매개변수로 적절한 Service의 메소드를 호출하게 되고, Service는 DTO를 비즈니스 로직을 통해 Entity로 변환된 객체를 Repository를 이용해서 저장하게 된다. 이때 DTO를 Entity로 변환해보면서 객체지향적인 방법에 대해서 고민했던 점들을 정리해 보았다. 스키마 사용자가 회원가입 form을 작성해..