우테코 프리코스

우테코 프리코스 2주차 후기 : 자동차 경주 게임 (안드로이드)

roder 2024. 1. 22. 21:56

 

# 깃허브 주소

 

https://github.com/leeugun123/racing-car-kotlin-test

 

GitHub - leeugun123/racing-car-kotlin-test

Contribute to leeugun123/racing-car-kotlin-test development by creating an account on GitHub.

github.com

 

# 전체적인 우아한 프리코스 후기

 

우아한 테크 프리코스를 진행하면서 정말 많은 것들을 배우게 되었다.

사실 2주차 후기라기 보다는 프리코스 전체적인 후기라고 보는 것이 맞다.

 

이전에 프로그램을 개발하면서 들었던 생각은 일단 돌아가기만 하면 되는거 아닌가? 였다.

하지만 프리코스를 진행하면서 똑같은 기능을 구현하더라도 어떤 개발자라도 쉽게 이해 할 수 있는 코드와

누가봐도 대체 뭐라고 쓴거지..?라고 쓴 코드들이 있었다.

 

나같은 경우에는 후자였다. 물론 작동은 하였지만 내가 쓴 코드임에도 불구하고

무슨 의도를 가지고 코드를 작성한 것인지 모를 정도였다.

 

제시한 프로그램을 개발 하는것 뿐만 아니라 다른 분들의 코드를 리뷰하고,

감사하게도 다른 분들도 내 코드를 리뷰해주셨다. 

 

당시 나는 코테 준비하느라 자바만 써봐서 코틀린이라는 언어는 잘 써보지 못했지만,

이번 프리코스를 통해 코틀린이라는 언어가 얼마나 고급진 언어인지 깨닫게 됐다. 

ex) ; 생략 , null 처리 방식 , 함수형 패러다임 도입 등등 

 

개인적으로 자바의 장점은 그대로 가져오면서 단점을 보완한 언어라고 생각된다.

 

과제 조건을 만족하는 과정을 통해서 어떻게 해야 클린코드가 만들어지는지

안드로이드에서의 MVC 패턴뿐만 자동차 경주 게임이라는 단순한 프로그램에서도

MVC패턴이 어떻게 적용돼는지 새롭게 알게 되었다.

 

# 깃허브 PR 주소

https://github.com/woowacourse-precourse/kotlin-racingcar-6/pull/133/files

 

[자동차 경주] 이유건 미션 제출합니다. by leeugun123 · Pull Request #133 · woowacourse-precourse/kotlin-racingca

 

github.com

 

 

일단 다른 분들이 내 코드 리뷰한 것을 토대로 블로그를 작성해보겠다.

 

 

for(int i = 0; i<x.length(); i++){}

 

사실 자바에서 반복문을 살펴보면 이런식으로 for문을 사용해서 반복문을 사용했는데

코틀린에서는 repeat라는 함수를 제공해준다.

 

따라서 굳이 긴 for문을 쓰지 않아도 repeat()라는 함수를 쓰면 내가 원하는 숫자만큼 코드가 작동되어

가독성면에서도 훨씬 이득이 된다.

이처럼 코틀린에서는 흔히 자바에서 쓰는 쓰잘데기(?) 없는 코드를 사용하지 않아도

내가 딱 원하는 동작만 작동시켜주는 간결한 코드를 제공한다.

 

 

 

또한 코딩테스트에 길들여져서 그런지 반복문 사용 시 for(int i =0; i<name.length();i++) 이란 길고 긴 코드를 작성했지만

forEach문을 사용해서 배열 or 리스트를 순회 할 수 있는 코드를 제공해준다.

 

사실 이 표현식은 자바에도 있는 표현식이지만 이번 프리코스를 진행하면서 반복문을 작성 시 새롭게 습관화(?) 되었다.

 

 

 

 

또한 코틀린에서 제공하는 기능 중 하나가 바로 null을 대비 할 수 있는 코드를 제공한다는 것이다.

? 키워드는 null에 대한 참조를 허용하고

!! 키워드는 null 자체를 허용하지 않는 등

이처럼 nullPointerexception이 일어날 수 있는 경우를 대비 할 수 있는 키워드를 제공해준다.

 

 

 

사실 코틀린이 자바보다 정말 트렌드하다고 생각되는 부분이 함수형 패러다임을 지원한다는 것이다.

 

자바로 메소드를 구성할때 기본적으로 접근제어자, 리턴 타입 등등 여러 부분의 키워드를 입력해주어야 했는데 

코틀린 같은 경우는 메소드 작성 시 딱 필요한 부분만 간소화 시켜 코드를 간결하고 가독성 있게 작성 할 수 있다.

 

리뷰해주신 분의 피드백을 봐도 구구절절 쓸데없이 randomCheck()를 작성한 것에 비교하여

코드가 어떻게 작동하는지 한번에 파악 할 수 있다.