Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions week1/[1주차] 김우균.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
안녕하세요 26학번 김우균입니다.
14 changes: 14 additions & 0 deletions week2/[2주차] 객체지향 연습.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
혼자 서비스를 구현해오면서 평소에 중요하다고 느꼈던 점들을 이번 프로젝트에 적극적으로 반영해보았습니다.
가장 우선적으로 생각한 것은, 어떤 기능이든 나중의 유지보수를 고려해 최대한 유연하게 작성하는 것이었습니다.
또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보며, Model, Controller, View의 책임을 어떻게 나누고 역할을 더 명확하게 분리할 수 있을지 깊이 고민해볼 수 있었습니다.
이 과정에서 예외 처리 역시 단순히 처리하는 데 그치지 않고, 어떤 위치에서 처리해야 명확한지, 에러 메시지는 얼마나 직관적이어야 하는지, 어떤 오류 조건을 정의해야 하는지 등을 함께 생각하며 설계했습니다.
초기에는 로또 클래스가 List<Integer>로 구현되어 있었는데, 로또 번호가 6개로 고정되어 있는 특성을 고려하면 원시 배열이 더 적합하다고 판단해 구현을 시도했습니다.
다만 명세를 우선해야 했기 때문에, 최종적으로는 명세에 맞는 형태를 유지하는 방향으로 정리했습니다. 이 경험을 통해 더 나은 구조와 명세 준수 사이의 균형을 지키는 것이 중요하다는 점을 배웠습니다.
또한 당첨 결과를 enum으로 관리해야 한다는 요구사항을 보자마자 의도를 파악할 수 있었습니다.
단순히 값을 나열하는 데 그치지 않고, 입력값에 따라 적절한 당첨 결과를 반환하는 정적 메서드도 함께 구성하여 책임을 분리했습니다.
프로젝트 전반의 유연성을 높이기 위해 상수는 한 곳에 모아 관리했습니다.
사소한 수치를 수정할 때마다 여러 파일을 수정해야 하는 불편함을 줄이고자 Constants를 중심으로 설정값을 통합했습니다.
또한 큰 숫자는 _를 활용해 가독성을 높였습니다.
이외에도 람다를 활용해 입력 처리 방식을 유연하게 구성했고, 예외가 발생했을 때의 흐름은 문제 의도를 고려해 보수적으로 설계했습니다.
전체적으로 이번 프로젝트를 통해 단순히 기능을 구현하는 것을 넘어, 유지보수성, 명세 준수, 예외 처리 방식까지 함께 고민하는 경험을 할 수 있었습니다.
https://github.com/COW-edu/practice-oop-lotto/pull/52