로또 게임 3주차의 미션은 '로또' 게임 프로그램을 구현하는 것이다. 이번에 추가된 학습 목표는 아래와 같다. 클래스(객체)를 분리하는 연습 도메인 로직에 대한 단위 테스트를 작성하는 연습 2주차까지 했던 설계 방식으로 해도 기능 구현에는 큰 무리가 없었다. 작성한 코드 역시 직관적이고 간결하다고 생각했다. 그러나 여전히 테스트 코드는 어떤 위주로 작성해야 하고, TDD에 대한 감을 잡지 못한 것 같았다. 지금까지 했던 설계로는 캡슐화나 의존성으로 인해 테스트 코드를 작성하면서 구현 코드를 변경했다. 테스트 코드에 기능을 맞추는 꼴이 되어가는 것 같아 찝찝했다. 또한, 과연 내가 했던 설계가 보기에는 직관적이어도 유지보수에는 용이할까라는 의문도 들었다. 다른 사람들이 왜 MVC 패턴이나 일급 컬렉션을 사..
자동차 경주 게임 이번 주차의 미션은 '자동차 경주 게임' 프로그램 구현이다. 기능구현 측면에서 저번 주차의 '숫자 야구 게임'과 비슷하다. 이번 주차는 학습 목표로 '함수를 분리하는 것'과 '함수별로 테스트를 작성하는 것'이 추가되었다. '숫자 야구 게임'에서 함수를 분리하는 것은 신경썼었지만 테스트 코드는 충분히 고민해보지 못해 아쉬웠는데 학습 목표로 추가되어 테스트코드에 대해 좀 더 집중해서 미션을 수행해보려고 한다. 테스트 코드에 대한 의문 프로그램에 대한 설계를 빠르게 마치고 구현 기능 목록을 작성한 다음에 기능 구현에 들어갔다. 기능 구현 자체는 어렵지 않았지만 저번 주차처럼 테스트 코드를 작성해봤지만 뭔가 찝찝함이 들었다. 테스트 코드는 언제 작성해야 하는 것일까? 기능 구현 전? 기능 구현..
숫자 야구 게임 올해 프리코스의 1주차 미션은 숫자 야구 게임 프로그램을 구현하는 것이다. 리드미의 '기능 요구 사항', '프로그래밍 요구 사항', '과제 진행 요구 사항' 세 카테고리의 요구 사항을 만족하며 과제를 진행하면 된다. 과제의 기능 구현은 간단하다. 하지만 코드 컨벤션, 예외처리, 테스트, 클린코드까지 고민하고 학습하다 보면 일주일이 금방 지나간다. 그동안 개발을 하면서 기능 구현에만 집중했던 스스로를 반성했다. 주도적으로 학습하는 개발자, 협업에 능한 개발자가 되기 위한 기본적인 역량을 체감할 수 있었다. 무엇보다 오랜만에 순수하게 개발에만 몰입할 수 있어 즐거웠다. '오랫동안 동료들과 즐겁게 일하며 성장하는 개발자'가 우테코가 지향하는 개발자의 모습이지 아닐까 하다. 짧은 시간동안 모든 ..