이번 과제를 진행하면서 역시 많은 걸 배울 수 있었습니다.
함수를 최대한 분리하고, 함수별로 테스트하기 위해 노력하였습니다. 또한, 객체지향 생활체조 원칙 9가지도 지키려고 노력하였습니다.
원시 값 포장과 일급 컬렉션
사용자의 Input 값을 주어진 메서드 readLine() 을 사용해 String 값으로 받았고 Computer의 Random 값은 List로 반환하게 하였습니다. 결과적으로 값의 비교는 List로 해야 했습니다.
주어진 입력값은 객체로 포장하여 사용하였는데, 이때 객체로 포장할 때 사용자의 Input 값 String을 List로 변환해서 받을지, String으로 받은 뒤 List로 반환할지 고민을 많이 했습니다.
Class 로 값을 묶어서 사용할 때 방법이 아래와 같이 2가지가 있었습니다.
public class Users {
private List<Integer> values;
public Users(List<Integer> values) {
CheckLength(values);
CheckRange(values);
CheckDuplicate(values);
this.values = values;
}
...
}
public class Users {
private String input;
public Users(String input) {
CheckLength(input);
CheckRange(input);
CheckDuplicate(input);
this.input = input;
}
...
}
저는 후자의 방식을 선택했습니다. 그 이유는 문자열로 입력받았고, 받은 문자열을 가지고 유효성을 판별하는 것도 나쁘지 않다고 생각했습니다. 또한, 정규 표현식과 indexOf를 사용해 코드 자체를 간결하게 할 수 있었기 때문입니다.
처음부터 값을 List<Integer>로 받았다면 NumberFormatException에 대한 예외 처리를 추가했어야 했습니다. 왜냐면 String에서 바로 Integer 변환하게 되면 NumberFormatException이 발생할 수 있습니다.
이를 통해 유횻값 검사의 순서도 중요하고, 위치가 중요한 것을 배울 수 있었습니다.
매개변수의 개수는 몇개 정도가 적당할지
아래 코드를 보면 2중 반복문을 사용하기 위해 메서드 분리했습니다. 하지만 매개변수가 늘어나게 되었습니다.
public int countBall(List<Integer> computer, List<Integer> user) {
for (int i = 0; i < computer.size(); i += 1) {
this.ball += hasBall(computer, user, i);
}
return this.ball;
}
private int hasBall(List<Integer> computer, List<Integer> user, int i) {
int count = 0;
for (int j = 0; j < computer.size(); j += 1) {
if (i == j) continue;
if (computer.get(i) == user.get(j)) count += 1;
}
return count;
}
위 코드와 같이 반복분 안에 반복문을 넣을 때 매개변수가 증가하게 되는데 이런 부분을 많이 고민하게 되었습니다.
느낀점
힘들다, 그렇지만 힘든 만큼 재밌다. 짜릿하다.
아쉬웠던 부분, 놓쳤던 부분, 다음 과제에 적용할 부분
반복문에 사용되는 변수명
if 문 내부가 한 줄이더라도 블록을 사용해 감싸주는 것 (java convention)
Junit 테스트 제공되고 있는 다양한 어노테이션을 활용하지 못한것
stream 사용해보기
코드가 궁금하다면 : https://github.com/iyk2h/java-baseball
'우아한 테크코스' 카테고리의 다른 글
[우테코] 최종 코딩테스트 회고 (4) | 2022.12.19 |
---|---|
[회고] 우아한 테크코스 5기 프리코스 4주차 회고 (0) | 2022.11.23 |
[회고] 우아한 테크코스 5기 프리코스 3주차 회고 (0) | 2022.11.18 |
[회고] 우아한 테크코스 5기 프리코스 1주차 회고 (4) | 2022.11.03 |
댓글