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

1주차 미션 / 서버 1조 김상준 #11

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

drbug2000
Copy link

Ladder class를 최상위 클래스로 만들고, Ladder class에만 접근하면 하위 클래스들을 몰라도 동작하도록 만들어 봤습니다.

질문

  1. 힌트에는 Position객체에 "인원수를 넘는 위치 접근" 유효성 검사책임이 있어 validate()함수를 만들라고 나와있는데 이렇게 되면 각 Position마다 인원수에 대한 정보를 저장하고 있어야 하는데, 이렇게 되면 Position 객체를 생성할 때마다 인원수를 parameter로 넘겨야하고, 인원수 정보를 갖고 있지 않은 클래스들은 Position을 생성 할 수 없어 저는 Row 클래스가 해당 유효성 검사에 책임을 갖는 걸로 만들었습니다. 혹시 Position이 책임을 갖으면서도 다른 클래스에서의 접근이 쉽게 하는 다른 방법이 있는지 궁금합니다
  2. 출력 값을 검사하거나, 램덤 생성 함수의 중간 필드 값을 검증하고 싶을 땐 Unit 테스트를 어떻게 설계해야 하는지 궁금합니다. Test용 getter를 따로 생성해야 하는지 다른 방법이 있는지 궁금합니다

모범 답안 보면서 더 공부해보겠습니다 감사합니다!

@jaeuk520
Copy link

jaeuk520 commented Mar 22, 2024

안녕하세요:) 서버 파트장 박재욱입니다.
잠시 남는 시간에 질문을 읽어보다가 1번에 대한 답변은 빠르게 드릴 수 있을 것 같아서 답변해드려요.
결론부터 말씀드리자면 Position마다 "인원수에 대한 정보"를 저장할 필요가 없습니다.
Position 클래스는 현재 작성해주신대로 position 값만 필드로 가지고 있으면 충분합니다. Row 클래스에서 Position이 유효한지 검증하고 싶으실 때는 Position의 validate()를 호출하면서 파라미터로 값만 넘겨주고 해당 값이 유효한지 그 여부만 반환받아서 사용해주시면 해결될 것 같아요.

@drbug2000
Copy link
Author

그렇군요!감사합니다

@jaeuk520
Copy link

2번 질문은 "getter 사용을 최대한 지양하는 코드를 작성하다보니 테스트 작성에 어려움이 생겼다" 는 뜻으로 이해하고 답변 드릴게요! (제가 질문을 잘못 이해한 것이라면 다시 물어봐 주셔서 됩니다 🤣 )

실제로 서버 개발을 할 때도 테스트 코드를 위해 추가되는 코드들이 존재합니다. 또한 getter와 같은 경우에는 의미없이 남발하지 말라는 뜻이지 필요할 때에는 getter를 추가해주셔도 괜찮습니다. (실제 프로젝트에서도 getter와 같은 경우에는 많이 사용합니다.
하지만 setter의 경우에는 속성값이 수정될수 있기 때문에 꼭 필요한 경우가 아니라면 무조건적으로 사용에 제약을 두시는게 맞을 것 같아요:)

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