우테코 벌써 한달이 지나갔다. 

 

마지막 4주자 문제는 오징어 게임에서 나온 그 다리건너는 게임이랑 규칙이 정확히 똑같은 느낌이였다. 

 

또한 이번 주차부터는 요구사항이 많이 많이 늘어났는데, 아마 MVC 패턴쪽으로 자연스럽게 사람들을 유도시키는 느낌이였다. 

 

https://github.com/woowacourse-precourse/javascript-bridge

 

GitHub - woowacourse-precourse/javascript-bridge

Contribute to woowacourse-precourse/javascript-bridge development by creating an account on GitHub.

github.com

 

그리고 풀면서 부딪혔던 부분을 적어보고자 합니다. 

 

1. throw문을 통한 예외 발생 

 

3주차때는 Error 객체를 상속받아서 InputError 라는 커스텀 에러로 만들었습니다. 그리고 예외처리할때마다 throw new InputError(message) 이런식으로 넘겨주면서 에러를 발생시키고 종료를 시켰었습니다. 하지만 이번게임은 예외는 발생을 시키되, 다시 입력을 받아야하는 상황이였습니다. 하지만 throw문에서 Error을 던져주면 프로그램은 종료가 됩니다. boiler plate에 이미 작성되어있는  테스트 코드에서는 에러메세지를 Console 메시지 출력으로부터 확인하고 있음을 발견했습니다. 그래서 예외를 발생시킬때 Error를 던지되 try-catch 문에서 해당 에러타입에 맞는 메세지를 출력하게끔 만들고, 다시 입력을 받게끔 로직을 만들었습니다. 

 

2. MVC 패턴 적용 

View

보일러플레이트에서 객체와 클래스파일을 먼저 뼈대를 줬습니다. 메소드의 이름을 못바꾸는 경우가 몇가지 있었는데 읽어보고 나서 바로 MVC 패턴으로 구현하라는 말이구나라는 생각을 하게 되었습니다.

View 관련 객체

이 두 객체를 통해서만 Console에서 입력과 출력을 다룰수 있었습니다. 즉 View 클래스를 만들고 위 객체를 사용하여 기능을 구현하라는 말로 이해를 했습니다.


Controller

Controller 클래스

보일러 플레이트에서 주는 클래스다. move() retry라는 메소드를 보고 나서 프로그램 중간에서 동작을 제어하는 Controller 역할이겠군나 생각을 했습니다. 


Model

그리고 Model에 관련한 클래스는 없었지만 다리길이에 대한 배열을 자동생성해주는 객체메소드는 보일러 플레이트에서 주어졌다. 

그래서 프로그램을 실행하면서 필요한 데이터를 저장할 BridgeModel이라는 클래스를 하나만들어 관리하고 

밑에처럼 이런식으로 위에서 주어진 메소드를 활용해서 Bridge라는 인스턴스를 또 만들어서 해당 배열값을 private하게 관리하였다. 

 

 

지난 4주가 안써보고 안 생각해봤던 여러가지 요소를 생각하면서 코드를 짜본게 참 재미있었다. 시간관리가 안되서 정말 힘들었지만.. 좋은 경험이였다고 할 수 있겠네요 ㅎㅎ