언제나 그렇듯이 프로젝트는 기획을 동시에 하면 그 부분이 너무 힘들다. 설계나 기획을 그때 그때 수정하면서 개발 직접하니까 좋지 않냐라는 생각이 들겠지만야 기획부터 상세히 해야 개발이 편해서 장단이 있는 거 같다.
일단 현재 과제 프로젝트 진행하면서 인상적인 것만 말하자면, 비대해지는 코드에 대해서 피드백을 받고 파일을 분리할 필요를 느꼈는데, nodejs에서는 모듈화를 통해 export, import를 하는 점이다.
import chalk from 'chalk';
import readlineSync from 'readline-sync';
import readline from 'readline';
import { Player } from './Player.js';
import { Monster } from './Monster.js';
import { InitialStatData, InitialProbData, GameData, ActionStateType} from './data.js';
import { displayStatus, displayLog, displayTextAnim } from './display.js';
내 현재 프로젝트에선
클래스 파일인 Player.js, Monster.js
하드코딩을 막기 위한 초기값과 설정값에 대한 데이터 목록 data.js
콘솔창 띄우는 처리의 함수를 모아놓은 display.js
이렇게 기능별로 모듈화하여 분리시켰다.
턴제 로직 플로우대로 게임 플로우를 구현하다가
플레이어 혹은 몬스터의 사망 처리 관련해서 간단하게 델리게이트로 등록을 할까 했는데
JS에서는 델리게이트를 이용하는 것 대신
Event Emitter라는 개념을 사용한다는 점을 알게 되었다.
앞서 말했듯 Event Emitter는 마치 델리게이트처럼 '이벤트 등록'을 통해
비동기, non-blocking I/O 를 처리하는 핵심적인 부분이다.