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

[LBP] 현정빈 사다리 1단계 미션 제출합니다. #40

Open
wants to merge 2 commits into
base: jeongbeanhyun
Choose a base branch
from

Conversation

JeongBeanHyun
Copy link

@JeongBeanHyun JeongBeanHyun commented Mar 7, 2025

  • 리뷰어 : 이한길님
  • 리뷰이 : 현정빈
  • 페어 : 권지후님

한길 리뷰어님 안녕하세요!
사다리 게임 미션 1단계 제출합니다.
이번 미션에서 최대한 메서드를 분리하여 작성하였고, MVC 패턴을 고려하면서 설계하였습니다.
이 부분에 대한 피드백 부탁드립니다..! 항상 감사드립니다!


1단계 구현

미션을 수행하기 전, 네이버 사다리 게임을 분석해보았습니다.
이를 통해, 4x4 사다리의 경우, 총 4개의 세로줄이 존재하며, 각 줄 사이에는 3개의 연결선이 존재해야 한다는 점을 확인하였습니다.
사다리

사다리 분석 결과

  • 사다리는 |-----| |-----| 형태로 출력됩니다.
  • 연결선이 연속으로 나타나지 않도록 isPreviousLine 변수를 활용하여 제어하였습니다.
  • 랜덤한 연결이 필요하므로 Random 클래스를 사용하여 가로선을 생성하였습니다.
  • 결과값을 확인하다 보니, 랜덤 값의 영향으로 특정 줄이 아예 비어있는 경우가 발생하기도 했습니다.
  • 해당 현상에 대해 고민했지만, 랜덤 요소는 요구사항의 일부분이므로 자연스러운 현상이라고 판단하여 그대로 구현하였습니다.

구현한 주요 기능

Controller

  • LadderController : 사다리의 흐름을 제어하고, modelview를 연결하는 역할

Model

  • Ladder : 사다리 전체를 관리하며, 여러 개의 Line을 포함
  • Line : 하나의 사다리 줄을 관리하고, Point를 사용해 가로선을 관리
  • Point : 특정 위치의 가로선 존재 여부(HAS_POINT, NO_POINT)를 나타내는 Enum
  • Size : 사다리의 크기를 나타내는 값을 포장 (width, height)

View

  • LineCharacter : 사다리를 출력할 때 사용하는 문자열 기호 (|, -----, " ")
  • ResultView : 사다리 결과를 출력하는 역할

질문

  • SRP를 적절하게 준수했는지 궁금합니다. 현재 구조에서 추가적인 리팩토링이 필요할까요?

  • 연결선이 최소한 한 번은 등장하도록 보장해야 할까요? 현재 랜덤한 값이 적용되면서 어떤 줄은 가로선(HAS_POINT)이 하나도 없는 경우도 발생합니다. 연결선이 최소한 한 번 이상 생성되도록 강제하는 것이 더 적절할까요?
    image

Copy link

@hangillee hangillee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요, 정빈! 👋
어느덧 마지막 미션이네요!

문제될 만한 부분은 전혀 없어 보입니다! 요구 사항도 잘 구현하셨습니다!
질문에 대한 답변 드리겠습니다!

  • SRP를 적절하게 준수했는지 궁금합니다. 현재 구조에서 추가적인 리팩토링이 필요할까요?

잘 준수하신 것 같습니다. 객체 분리도 적절하게 하셨고, 전반적으로 깔끔하네요! 👍 다만, 단위 테스트가 하나도 없어서 구현하신 기능에 대한 검증이 이뤄지지 않고 있습니다. 지금까지 배웠던 것들을 적용해보는 것도 미션에서 중요하니, 테스트를 작성해주세요! 😁

  • 연결선이 최소한 한 번은 등장하도록 보장해야 할까요? 현재 랜덤한 값이 적용되면서 어떤 줄은 가로선(HAS_POINT)이 하나도 없는 경우도 발생합니다. 연결선이 최소한 한 번 이상 생성되도록 강제하는 것이 더 적절할까요?

정빈이 생각하기에 그게 더 자연스러운 사다리 타기라면 구현을 도전해보는 것도 좋을 것 같습니다! 요구 사항은 최소한의 제약 사항일 뿐, 더 나은 도메인 구현 방법이 있다면 전 그 쪽이 더 좋다고 생각합니다. 😁

변경 사항 적용하시고 RC 남겨주세요! 파이팅!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

단순 getter만 존재하는 클래스는 Record로 변환할 수 있을 것 같습니다!

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.

2 participants