Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[로또 미션] 김의천 미션 제출합니다. #71

Open
wants to merge 21 commits into
base: wzrabbit
Choose a base branch
from

Conversation

wzrabbit
Copy link

@wzrabbit wzrabbit commented Jan 26, 2025

안녕하세요 리뷰어님 👋🏻 로또 미션을 제출합니다. 잘 부탁드립니다!
기능 자체는 많이 들어있지 않은 것 같은데 엄밀하게 코드를 짜니 어마무시하게 거대한 코드가 되어버리는 것 같군요

이번 미션에서 신경써본 점 ✅

  • 데이터를 관리하는 대부분의 클래스들을 일급 컬렉션 으로 구현하였습니다. 일급 컬렉션으로 구현하면서 특히 신경 쓴 것은 데이터 검증 인데, 각 검증 로직들을 각 클래스 내에 두었습니다.
  • 상수들을 enum 클래스로 관리하였습니다.
  • for 문의 사용을 줄이고, stream, forEach 등을 사용해 코드의 의도를 나타내었습니다. stream 이 장난아니게 복잡하더군요.

일급 컬렉션 사용 소감

상당히 좋았어요!

미션 진행 전 구글링을 하면서 클래스들을 개발자분들이 어떻게 다루나 보았는데 신기하게도 도메인 로직을 담당하는 클래스 내부 자체에 검증 로직을 많이들 두었더라고요. 그 때는 그런갑다 하고 넘어갔는데 이렇게 직접 검증 로직들을 그 클래스에 넣고 관리해주니 코드의 신뢰도가 많이 올라갔다는 것을 느꼈습니다.

  • 원시 값은 너무나도 잘못 조작되기 쉬운데, 이렇게 일급 컬렉션을 사용해 각 데이터를 클래스 안에 두어 사용하고, 그 과정에서 검증을 거치기에 이 인스턴스들이 들고 있는 값들은 올바른 값을 들고 있는 것이 보장 되는 것이 정말 좋더라고요.
  • 사용하는 입장에서 검증에 대해 신경쓰지 않아도 된다는 점도 좋았어요. 이전 미션처럼 입력받을 때 한 번만 검증했다면 검증 로직을 분리해도 전혀 상관이 없었으나 이번 미션에서는 은근 같은 로직을 검증해야 하는 일이 많았어요. 예를 들어 로또 번호와 당첨 로또 번호는 목적만 다를 뿐 근본적인 구조와 검증해야 하는 로직이 같아요. 이 경우 검증 로직을 적는 것을 까먹거나 매번 검증 로직을 적어 가독성과 생산성이 떨어지는 문제가 예상되었는데 이 단점들이 싹 다 사라지는 느낌이었어요.
  • 꼭 사용자의 입력이 아니더라도, 개발자의 구현 실수로 인해 잘못된 값이 일급 컬렉션에 넘어가더라도 이를 인지하고 예외를 발생시키니 실수를 줄이기에도 좋다는 생각이 들었어요.

결론적으로 데이터를 관리하기에 안전한 방식처럼 느껴졌어요. 특히 여러 클래스들을 조합하여 새로운 클래스를 만들거나 복잡하게 데이터가 오갈 때 이 장점이 부각될 것 같아요.

enum 사용 소감

음... 솔직히 아직까지는 크게 장점이 와닿지는 않았던 것 같아요. 상수들만을 관리하는 클래스를 만들어서 쓸 수도 있었을 것 같고, 심지어 그게 더 간단한 문법이었을 수도 있을 것 같아요. enum을 어떨 때 쓰면 좋을지, 상수들을 관리하는 클래스를 만들었을 때와는 무슨 차이가 있는지 좀 더 알아봐야겠네요. ~~~.getValue() 남발하다 보니 너무 길어지더라고요. 물론 의미를 나타낸다면 충분히 이름은 길어질 수 있지만 이건 좀 다른 느낌인 것 같아요. getValue() 를 뺀다고 의미가 퇴색되는 것도 아닐테고요.

이번 미션에서는 크게 헤맨 점은 없지만, 번거로운 점은 좀 많았던 것 같아요. 자바스크립트에서는 쉽게 했던 배열 합치기, 배열 그대로 대입하기, 맵핑하기가 자바에서는 상당히 불편하게 느껴졌어요. 아마 코드 곳곳에 복잡한 부분이 있을 거에요. 자바스크립트의 문법이 그리워지네요. 😢

아래는 실행시켜 본 화면이에요.

image

그럼, 잘 부탁드리겠습니다!

- 발행된 로또 값들을 그대로 로또 클래스에 생성자로 넣기 때문에, 모킹이 필요하지 않으며, 상속 또한 필요하지 않음
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant