전체 글
객체지향적으로 머드게임 만들기 - DI 프레임워크 만들어서 리팩토링
1. 객체지향적으로 머드게임 만들기 (2022년) 2022년 말에 객체지향적으로 머드게임 만들기라는 주제로 회사 내부 세미나를 진행했었다. 객체지향적으로 간단한 머드게임 만들기 최근 회사 개발자 전원에게 '객체지향적으로 간단한 머드게임 만들기'라는 과제가 주어졌다. 기본적인 룰은 제공을 해주는 과제였다. 해당 자료는 해당 과제 발표자료이다. 게임 기초 룰 위의 joorrr.tistory.com 해당 세미나는 언어나 프레임워크에 제한이 없어서 Typescript로 프레임워크나 라이브러리 사용 없이 구현했었다. 그러면서 객체지향적으로 구현하기 위해서 역할과 책임에 따라 나누고 객체 간의 관계를 의존성 주입으로 설계했기 때문에 객체 간에 얽혀있는 의존성을 직접 관리해 줘야하는 불편함이 있었다. 아래는 그때 ..
Reflect API
Reflect API는 Reflection이라는 개념(런타임 시점에 사용되는 자신의 구조와 행위를 관리하고 수정하는 개념)이 들어간 자바스크립트 내장 객체로 Proxy와 같이 자바스크립트 명령 중간에 실행할 수 있는 기능이다. 1. Reflect.get, Reflect.set 대표적인 Reflect api로는 get, set이 있다. 먼저 MDN에 나와있는 Reflect.get 예제 코드를 보게 되면 아래와 같다 1-1. Reflect.get // Reflect.get(target, propertyKey, receiver?) // MDN 예제 코드 const object1 = { x: 1, y: 2 }; console.log(Reflect.get(object1, 'x')); // Expected out..
Express에서 DI 프레임워크 만들어보기
Nodejs 진영에서 DI/IoC를 사용해 서버를 구축하기 위해선 DI 프레임워크인 Nestjs를 사용하거나 Express에서 typedi를 활용해 서버를 구축해야 한다. Nestjs에선 데코레이터(@)와 Module을 활용해 의존성들의 관계만 신경 써주면 쉽게 주입받아 관리할 수 있고, Express에서 typedi로 의존성을 관리하는 것도 비슷하다. (@Service 데코레이터를 통해서 IoC 컨테이너에 자동으로 등록되고 런타임 때 typedi를 통해 알아서 주입받아 사용하는 형태다) 최근 들어 Nestjs에서 데코레이터를 커스텀해 사용할 일이 많아지다 보니 도대체 데코레이터의 동작원리가 어떻게 된 건지 궁금해졌다. 하지만 Nestjs에서 제공하는 커스텀 데코레이터 메서드들은 한번 더 추상화된 메서드..