개요
3주 차 미션이 공개되었습니다.
8기부터는 새롭게 오픈미션이라는 과제가 시작됩니다.
4주 차의 오픈미션이 어떤 내용을 담고 있을지 궁금합니다!
조심스럽게 예상해 보자면, 8기의 주제가 '도전'인 만큼 새로운 팀원들과 협업을 해보지 않을까 예상해 봅니다.
미션
3주 차 미션은 다음과 같습니다.
- 문제: 로또
- 기한 : 2025-10-28 15:00 ~ 2025-11-04 00:00




회고
리팩터링, 리팩터링, 리팩터링!
3주 차의 목표는 "기능은 빠르게 완성하고, 이후 리팩터링에 집중하자"였습니다.
계획대로 기능 개발은 순조롭게 진행되었습니다.
하지만 3주 차를 진행하면서 우테코에서 제공하는 공통 피드백, 코드 리뷰, 기본 원칙
이 세 가지가 주차별로 누적되면서 준수해야 할 규칙들이 많아졌고, 리팩터링에 많은 시간을 들이게 되었습니다.
실제로 약 40번의 커밋 중 절반에 가까운 18번이 리팩터링 커밋이었습니다.
시간 안에 완성할 수 있을까?
3주 차 과제를 마치고 한 가지 고민이 생겼습니다.
최종 코딩 테스트에 참여할 기회가 주어진다면, 시간 내에 작업을 완료할 수 있을까?
1주 차 때를 돌이켜보면, 클래스의 전체적인 구조를 잡는 것 자체가 어려웠습니다.
프리코스를 학습하기 전에는 검증과 같은 부분은 SpringBoot의 어노테이션으로 간단하게 처리했었고, 콘솔로 입력받는 문자열에 대한 parsing도 익숙하지 않았습니다.
하지만, 3주 차까지 경험치가 누적되었고 코드 리뷰를 통해 많은 학습을 이루었기에 과제를 마주하면 전체적인 구조들을 어느 정도 예측할 수 있다고 생각합니다.
상수화, 어디까지 해야 할까?
공통 피드백과 상호 코드 리뷰에서 상수화와 관련된 피드백을 받았습니다.
그래서 2주 차에는 모든 값을 상수로 분리하려 노력했습니다. 하지만 3주 차를 진행하면서 다음과 같은 고민을 하게 되었습니다.
- 0부터 6까지 반복을 한다고 했을 때, 반복의 시작을 설정하는 숫자(0)는 상수로 분리해서 사용해야 할까?
- 하나의 클래스에서만 상숫값을 사용하는데 Constants 클래스로 분리해야 할까?
고민 끝에 저만의 기준을 정할 수 있었습니다.
- 비교적 변화가 적고, 의미가 크지 않은 값은 상수로 분리하지 않는다. ( 반복문의 0 )
- 한 클래스에서만 사용하는 상수는 별도의 Constants 클래스로 분리하지 않는다.
이러한 부분은 정답이 정해져 있지는 않은 것 같고, 유지보수 하기에 괜찮은지 고민하며 진행하면 될 것 같습니다.
getter를 왜 쓰지 말라는 걸까?
2주 차에서는 "getter를 지양하라"는 클린코드 원칙을 철저히 지키려 했습니다.
하지만 과제를 진행하면서 getter 없이는 진행할 수 없다는 것을 깨닫고 일부 사용하여 제출했습니다.
예를 들어, User(사람) 객체가 자신의 나이를 가지고 있고,
요구사항이 "oo의 나이는 20살입니다."라는 문장을 출력해야 한다고 가정해 보겠습니다.
처음에는 “getter를 쓰면 외부에서 값을 바꿀 수 있어서 위험하다”는 이유로, 객체 내부에서 출력 문장을 만들어 반환하려 했습니다.
public String getAge(){
return "oo의 나이는 " + this.age + "살 입니다."
}
다시 생각해 보면, 출력 문구를 담당하는 것은 User 객체의 역할이 아닌 출력을 담당하는 클래스의 책임입니다.
이와 관련한 아주 좋은 블로그 글을 읽을 수 있었고, getter와 관련된 생각을 정리할 수 있었습니다.
getter를 무조건 사용하지 말라는 게 아니라, List <?>와 같이 가변 자료형을 반환하는 경우
주소 값이 외부로 노출되어 외부에서 변경될 가능성이 있기에 getter 사용을 지양해야 한다.
단순히 원칙을 지키는 것이 아니라, 원칙을 지켜야 하는 이유를 다시 한번 학습할 좋은 기회였습니다.
'우아한테크코스' 카테고리의 다른 글
| [우아한테크코스] 우테코 프리코스 8기 BE - 2주차 회고 (0) | 2025.10.28 |
|---|---|
| [우아한테크코스] 우테코 프리코스 8기 BE - 1주 차 회고 (0) | 2025.10.21 |
