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

Open
wants to merge 35 commits into
base: sojeong0202
Choose a base branch
from

Conversation

sojeong0202
Copy link

😱 어려웠던 점

  • 일급 컬렉션 적용하는 게 어려웠습니다.
  • TDD도 어려웠습니다.

🧐 궁금한 점

  • 일급 컬렉션 잘 사용한 게 맞을까요?
  • 더 테스트 해야 할 부분이 있을까요?
  • 어떤 테스트 메소드를 많이 사용하는지 궁금합니다.

✍️ 느낀 점

  • 부족한 점이 많지만 TDD를 도전해봐서 좋았습니다.
  • 일급 컬렉션에 대해서 새롭게 알게 되었습니다.
  • 한 코드에 대해 며칠에 걸쳐 생각하는 경험을 해서 좋았습니다.

yeeun0702 and others added 25 commits May 5, 2024 12:52
- 사람 이름 공백 예외 처리
- 사람 이름 null 예외 처리
- 사람 이름 겹칠 때 예외 처리
-사람 이름 공백 예외 처리
-사람 이름 null 예외 처리
-사람 이름 겹칠 때 예외 처리
- 쉼표 기준으로 이름 분리해서 Person 인스턴스 생성 후
- PersonList에 Person 인스턴스 넣는 기능 테스트
- 쉼표 기준으로 이름 분리해서 Person 인스턴스 생성 후 PersonList에 Person 인스턴스 넣는 기능 구현
- 한 줄 랜덤 생성 로직과 재가공하는 로직 분리
Copy link
Collaborator

@HanHyunsoo HanHyunsoo left a comment

Choose a reason for hiding this comment

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

고생하셨습니다. 아래 궁금한 점에 대해 답변 드립니다

궁금한 점에 대한 답변

  • 일급 컬렉션 잘 사용한 게 맞을까요?
    • 잘하신 것 같습니다. 일급 컬렉션이 좀 더 객체지향적으로 가기위한 방법인 것이고 필요한 상황일 때 판단하시고 앞으로 사용하시면 좋을 것 같아요.
  • 더 테스트 해야 할 부분이 있을까요?
    • 특정 입력 값에 대한 것이 아니라 다양한 입력 값에 대해서도 테스트 하시면 좋을 것 같습니다. 예를 들면 입력값이 (소정,예은,GDSC) 고 출력이 정상적으로 작동한다고 하면 다른 입력 (현수, 한길)도 제대로 작동되는지 보장되어야겠죠? 보통 이런 여러 입력을 여러개 정의하여 하는 경우도 있지만 랜덤한 값으로 하는 방법도 있어요
  • 어떤 테스트 메소드를 많이 사용하는지 궁금합니다.
    • 저의 경우에는 eqauls랑 throw관련 메서드 많이 사용하는 것 같습니다.

return firstNameBuilder.toString();
}

private String onlyVerticalLine() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 함수를 상수로 따로 뺴는 것이 좋을 것 같습니다.

return " |";
}

private String containPrintHorizontalLine() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 함수를 상수로 따로 뺴는 것이 좋을 것 같습니다.

@@ -0,0 +1,15 @@
package ladder.util;

public enum ErrorMessage {
Copy link
Collaborator

Choose a reason for hiding this comment

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

error 메세지를 enum으로 나눈 것에 칭찬드려요!

하지만 이 프로젝트에서 거의 모든 예외가 RuntimeException(IllegalArgumentException)으로 처리되서 개발자가 봤을 때 명확한 오류를 찾기위해서는 message를 봐야한다는 점이 아쉬운 것 같아요.

enum을 클래스 변수로 잡고 각 예외 상황에 대한 예외클래스들로 변경하여 리팩토링 하면 로직, 테스트 면에서도 더 명확해질 것 같아요.

@DisplayName("사다리 가로라인(Line)을 겹치지 않게 생성하는 메소드 테스트")
void should_ReraangeLadderLine_When_DuplicateTrue() {
// given
List<Boolean> points = Arrays.asList(true, true, true, true, true);
Copy link
Collaborator

Choose a reason for hiding this comment

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

List.of로 변경해주시면 좋을 것 같습니다.(Array -> List로 변환하는 과정에서 리소스가 듦)


Scanner scanner = new Scanner(System.in);

public String inputName() {
Copy link
Collaborator

Choose a reason for hiding this comment

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

여러 사람들의 이름을 입력받으니 이에 맞게 함수명에 복수형을 추가하는 것이 좋을 것 같습니다.

}

private static boolean hasDuplicatePersonName(String input) {
List<String> allPersonNames = new ArrayList<>(Arrays.asList(input.split(",")));
Copy link
Collaborator

Choose a reason for hiding this comment

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

stream으로 변경하면 더 가독성 있는 코드가 될 것 같아요.

import java.util.List;
import java.util.Random;

public class RandomBoolean {
Copy link
Collaborator

Choose a reason for hiding this comment

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

해당 클래스가 model의 역할을 하는지 명확하지 않은 것 같아요. random으로 boolean들을 생성하고 이를 통해 사다리를 구축해야하는데 사다리(LadderMaker or Line)에 의존하는 클래스라.. 이를 사용하는 클래스 안에 함수로 따로 빼는 것이 더 좋은 방향일 것 같아요.

vact19 pushed a commit that referenced this pull request May 20, 2024
기능 완료,  테스트 코드 구현중
vact19 pushed a commit that referenced this pull request May 20, 2024
@sojeong0202
Copy link
Author

바쁜 시간 내어 리뷰 해주셔서 감사합니다!
열심히 고쳐보겠습니다~!

@sojeong0202
Copy link
Author

sojeong0202 commented May 21, 2024

늦어서 죄송합니다!

리뷰 후 리팩토링 사항

👀 개선한 점

  • 사디리 문자 함수 -> 상수
  • 각 예외 상황을 예외 클래스로 분리함
  • LineTest에서 Arrays.as -> List.of 로 변경
  • 함수명을 복수형으로 변경
  • hasDuplicatePersonName() 메소드 내부 코드를 stream으로 변경
  • 랜덤 클래스를 메소드로 변경(사용하는 클래스 안으로)
  • PersonListTest에서 랜덤한 값에 대해서 테스트 작성

🧐 궁금한 점

Arrays.as -> List.of로 단순히 바꾸면 List.of는 불변객체여서 에러가 났습니다.
찾아보다가 결국 사진처럼 바꾸었는데, 이러면 전처럼 리소스가 드나요?
잘 바꾼 건지 확신이 안 듭니다!

@sojeong0202 sojeong0202 requested a review from HanHyunsoo May 21, 2024 18:19
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.

3 participants