정답보다 해답을

[우아한테크코스] AOS 프리코스 2주차 회고 - 레이싱 게임 본문

우아한테크코스

[우아한테크코스] AOS 프리코스 2주차 회고 - 레이싱 게임

DOLMENG. 2023. 12. 6. 17:11

 

미루고 미룬 후기를 써보려고 한다!

 


프리코스를 실험실로 이용하자

 

전공을 했다기엔, 몇 년간 프로그래밍을 했다기엔 부족하디 부족하다는 것을 느끼고 있다.

그냥 결과만 날 나오면 되는 거 아니야?

검색하면 다 나오는 걸?!

금방 할 거 같은데? 내일하자

부끄럽다. 성실한 태도, 발전 가능성이 전혀 보이지 않는 마인드다.

 

이번 프리코스를 통해 이런 나태함을 파괴하려 했다.

설계, 테스트코드, 클린코드 등과 같은 구현에만 매달리지 않는 프로그래밍을 하고싶었다.

2주차에는 난 얼마나 성장했을까?

 


MVC모델을 이용하다.

 

2주차 미션 소스트리

📦src
 ┣ 📂main
 ┃ ┗ 📂kotlin
 ┃ ┃ ┗ 📂racingcar
 ┃ ┃ ┃ ┣ 📂controller
 ┃ ┃ ┃ ┃ ┗ 📜RacingCarController.kt
 ┃ ┃ ┃ ┣ 📂model
 ┃ ┃ ┃ ┃ ┗ 📜Cars.kt
 ┃ ┃ ┃ ┣ 📂view
 ┃ ┃ ┃ ┃ ┣ 📜InputView.kt
 ┃ ┃ ┃ ┃ ┗ 📜OutputView.kt
 ┃ ┃ ┃ ┗ 📜Application.kt

 

이번 미션에서는 MVC모델을 구축하며 진행해봤다.

급하게 공부를 하며 어떻게 나눌지만 고민을 해봤다.

 

model: 데이터를 관리하는 부분

controller: 프로그램이 작동할 수 있게 기능을 관리하는 부분

view: 사용자와 직접적인 소통을 할 수 있는 부분, 즉 입출력을 담당하는 부분

 

처음으로 이렇게 구조를 구축하며 개발한 것 같다.

개발할 당시엔 아, 불편해... 이게 맞을까? 였지만

 

코드를 수정하거나 오류가 발생할 경우 바로 위치를 찾을 수 있었다 !!

 


2. 요구사항에 대해 고민하다.

함수 하나에 한 가지 기능만을 구현할 것

 

어디까지 나눠야할까? 너무 쪼개면 그것대로 부스러기 같아 보이진 않을까?

라는 고민이 들었다.

 

    private fun generateRandomNumber(): Int {
        return Randoms.pickNumberInRange(0, 9)
    }

    fun chooseActionFromRandomNumber() {
        val randomNumber = generateRandomNumber()
        if (randomNumber >= 4) {
            carPosition++
        }
    }

위 코드는 처음에는 하나의 함수였다.

최종으론

1. generateRandomNumber(): 랜덤값을 생성하는 함수

2. chooseActionFromRandomNumber(): 랜덤값을 받아 조건이 맞으면 전진하는 함수

로 구현됐다.

 

이렇게 분리를 하니 1번 함수는 private 속성을 가지게 되었다.

외부 접근이 불필요한 코드는 감출 수 있었다.

 

 


이번에도 통과를 했다!

2주차까지도 그렇게 어렵진 않았다.

다행이다.. 이때까지 난 군부대에서 겨우 코딩하던 군인이였으니...

지금 생각해보면 기능이 어렵진 않은 대신 더 많은 고민과 발전을 할 수 있었던 기회같은데 아쉽다.