아! 벌써 우테코 프리코스 2주차가 끝났다.. 전체 과정이 4주니 벌써 절반이 끝났다.
이제 두 번의 과제밖에 남지 않았다.. 남은 2주는 더욱 열심히 달려보자!
2주차 과제는 중고등학생때 친구들과 즐겨하던 숫자 야구 게임이라 만들면서 1주차보다 더 재밌었다. '게임'이라는 소재 덕에 역할 분리도 좀 더 수월했던 것 같다.
고민했거나 어려웠던 부분은 다음과 같다.
- 테스트 코드 작성
- 커밋 메시지 컨벤션
- 함수 명사형 네이밍
- 1주차 피드백 반영
1. 테스트 코드 작성
먼저 나는 테스트 코드라는걸 우테코에 와서 처음 만났고 생김새도 많이 생소했다.
일단은 ApplicationTest와 StringTest파일의 예시들을 보면서 따라해보려했다.
또 assertThat() 함수에 무작정 .을 찍어 어떤 메서드들이 있는지 살펴보았다.
그리고 이때 '네이밍'의 중요성을 더욱 깊게 느꼈다.
나는 처음 사용해봄에도 불구하고 각 메서드들이 어떤 역할을 하는지 유추가 되었다.
그중에서 hasSize(), isIn(), doesNotHaveDuplicates(), isEqualTo()를 사용했다.
정말 이름만 봐도 무슨 역할인지 알 것 같지 않은가?
이때 네이밍의 중요성을 피부에 와닿게 느끼고 앞으로 네이밍에 더 신경을 써야겠다고 생각했다.
내가 만든 기능 목록별로 테스트 코드를 짜면서 코드를 짜다보니 설계가 좀 더 잘 되는 듯 했고 추후에 코드를 수정할 일이 더 적었던 것 같다.
2. 커밋 메시지 컨벤션
커밋 메시지 컨벤션을 지키는 것은 꽤나 어려웠다.
나는 깃을 처음 만났을 때는 커밋 메시지에 해당 코드를 짜던 감정을 적을 정도로 마음대로였다.
그리고 개발에 조금 익숙해진 최근엔 커밋 메시지가 내용만 잘 전달하면 된다고 생각하여 일관된 형식 없이 자세히 말로 풀어서 썼다.
그랬던 나에게 우테코에서 추천해준 커밋 메시지 컨벤션 가이드는 꽤나 생소했다.
type, scope, subject, message body를 입력했는데 scope는 이해를 잘 못해서 일단 내가 수정한 파일을 적었다.
우선 이번 주차에는 사용해보고 익숙해지는 시간을 가져보고 피어 리뷰에서 커밋 메시지 코드리뷰를 부탁해볼 생각이다!
3. 함수 명사형 네이밍
우리는 보통 함수를 동사형으로 짓는다.
함수의 '행동'을 네이밍으로 나타내기 때문이다.
근데 이번 과제에서 아래와 같이 나는 명사형 네이밍을 사용했다.
class Game{
private fun standbyPhase(){...}
private fun mainPhase(){...}
private fun endPhase(){...}
}
나는 위 함수명들이 함수의 역할과 행동을 너무 잘 나타낸다고 생각해서 해당 함수명들을 사용하고 싶었다.
근데 명사형이라는 부분이 마음에 걸렸고 많은 고민 끝에 일단 사용해보고 2주차가 종료됐을 때 다른 사람들과 얘기해보려고 했다. 이걸 쓰기 몇시간 전 디스커션 아고라에 토론을 올렸다! 많은 분들이 의견을 남겨주길 바란다.
4. 1주차 피드백 반영
"축약하지 않는다. 의도를 드러낼 수 있다면 이름이 길어져도 괜찮다."
"클래스와 메서드 이름을 한 두 단어로 유지하려고 노력하고 문맥을 중복하는 이름을 자제하자."
이 부분을 읽고 머리가 띵해져서 내 코드를 수정하기 시작했다.
class Computer{
fun createComputerNumbers(){...}
}
class User{
fun enterUserNumbers(){...}
}
위와 같이 나는 Computer 클래스와 User 클래스에 각각 숫자를 생성하거나 입력받는 함수를 갖고 있었다.
그러나 피드백을 반영해 아래처럼 바꾸었다.
class Computer{
fun createNumbers(){...}
}
class User{
fun enterNumbers(){...}
}
이렇게 바꾼 이유는 아래 코드처럼 구분이 가능하기 때문이다.
val computer = Computer()
val user = User()
// 수정 전
computer.createComputerNumbers()
user.enterUserNumbers()
// 수정 후
computer.createNumbers()
user.enterNumbers()
함수명에 computer와 user가 포함되지 않아도 이미 computer의 숫자를 만드는지, user의 숫자를 입력받는지 알 수 있다.
2주차는 이렇게 숫자 야구와 함께 흘러갔다.
이제 지난 한 주의 회고를 마쳤으니 다가온 한 주의 할 일을 적어보려한다!
다음 주에 이 중에 몇 가지를 했을지 궁금하다,,
아, 그리고 2주차엔 커뮤니티를 잘 활용하지 못한 것 같다.
그래서 3주차엔 깃헙 디스커션을 열심히 이용해볼 생각이다!
3주차 할 일 (11.09 ~ 11.15)
- 1주차 우테코 과제 수정 (다른 참가자 분들의 코드를 보며 배울 점을 배우고 부족한 점을 보완한다)
- 2주차 우테코 과제 수정 (다른 참가자 분들의 코드를 보며 배울 점을 배우고 부족한 점을 보완한다)
- Github discussion에 올라온 다른 분들의 코드 피어 리뷰 하기
- 아고라에 명사형 함수 네이밍 토론 올리기
- 2주차 과제 피어 리뷰 올리기 (커밋 메시지에 대해 코드리뷰 받고 싶다)
- 3주차 과제
- 컴포즈 캠프 1주차
- 동아리 과제
'우아한 테크 코스' 카테고리의 다른 글
[우아한테크코스] 합격 및 온보딩 미션 후기 (0) | 2023.02.27 |
---|---|
우아한 테크 코스 최종 코딩테스트(점심 메뉴 추천) 회고 (0) | 2022.12.21 |
우아한 테크 코스 4주차(다리 건너기) 회고 (0) | 2022.12.21 |
우아한 테크 코스 3주차(로또) 회고 (0) | 2022.11.17 |
우아한 테크 코스 1주차(온보딩) 회고 (0) | 2022.11.01 |