diff --git "a/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" "b/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" new file mode 100644 index 0000000..d178ce9 --- /dev/null +++ "b/week1/[1\354\243\274\354\260\250] \352\271\200\354\232\260\352\267\240.md" @@ -0,0 +1 @@ +안녕하세요 26학번 김우균입니다. \ No newline at end of file diff --git "a/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" new file mode 100644 index 0000000..392afad --- /dev/null +++ "b/week2/[2\354\243\274\354\260\250] \352\260\235\354\262\264\354\247\200\355\226\245 \354\227\260\354\212\265.md" @@ -0,0 +1,14 @@ +혼자 서비스를 구현해오면서 평소에 중요하다고 느꼈던 점들을 이번 프로젝트에 적극적으로 반영해보았습니다. +가장 우선적으로 생각한 것은, 어떤 기능이든 나중의 유지보수를 고려해 최대한 유연하게 작성하는 것이었습니다. +또한 COW 서버 세션 시간에 배운 MVC 패턴을 적용해보며, Model, Controller, View의 책임을 어떻게 나누고 역할을 더 명확하게 분리할 수 있을지 깊이 고민해볼 수 있었습니다. +이 과정에서 예외 처리 역시 단순히 처리하는 데 그치지 않고, 어떤 위치에서 처리해야 명확한지, 에러 메시지는 얼마나 직관적이어야 하는지, 어떤 오류 조건을 정의해야 하는지 등을 함께 생각하며 설계했습니다. +초기에는 로또 클래스가 List로 구현되어 있었는데, 로또 번호가 6개로 고정되어 있는 특성을 고려하면 원시 배열이 더 적합하다고 판단해 구현을 시도했습니다. +다만 명세를 우선해야 했기 때문에, 최종적으로는 명세에 맞는 형태를 유지하는 방향으로 정리했습니다. 이 경험을 통해 더 나은 구조와 명세 준수 사이의 균형을 지키는 것이 중요하다는 점을 배웠습니다. +또한 당첨 결과를 enum으로 관리해야 한다는 요구사항을 보자마자 의도를 파악할 수 있었습니다. +단순히 값을 나열하는 데 그치지 않고, 입력값에 따라 적절한 당첨 결과를 반환하는 정적 메서드도 함께 구성하여 책임을 분리했습니다. +프로젝트 전반의 유연성을 높이기 위해 상수는 한 곳에 모아 관리했습니다. +사소한 수치를 수정할 때마다 여러 파일을 수정해야 하는 불편함을 줄이고자 Constants를 중심으로 설정값을 통합했습니다. +또한 큰 숫자는 _를 활용해 가독성을 높였습니다. +이외에도 람다를 활용해 입력 처리 방식을 유연하게 구성했고, 예외가 발생했을 때의 흐름은 문제 의도를 고려해 보수적으로 설계했습니다. +전체적으로 이번 프로젝트를 통해 단순히 기능을 구현하는 것을 넘어, 유지보수성, 명세 준수, 예외 처리 방식까지 함께 고민하는 경험을 할 수 있었습니다. +https://github.com/COW-edu/practice-oop-lotto/pull/52