JAVA/우아한테크코스 4기

[220211][JAVA] 페어 협업미션 리뷰어의 피드백_문자열 덧셈 계산기

kth990303 2022. 2. 11. 23:02
반응형

저번에 알렉스와 함께 페어 프로그래밍을 진행한 '문자열 덧셈 계산기', '자동차 경주 미션'이 벌써 피드백이 올라왔다!

리뷰어님(이하 미르)께서 새벽 2시에 피드백해주셨던데,

미르의 성실함에 감탄하지 않을 수 없었다...

 

전체 피드백 내용은 https://github.com/woowacourse/java-racingcar/pull/256 에서 볼 수 있다.

 

[1단계 - 자동차 경주 구현] 케이(김태현) 미션 제출합니다. by kth990303 · Pull Request #256 · woowacourse/j

선배님 안녕하세요! 우테코 4기 케이입니다. 열심히 배우겠습니다. 잘 부탁드립니다! 미션을 진행하면서 궁금했던 점이 있습니다. CarNameValidator 클래스에서 조건문 내부에 name.isBlank()를 메소드로

github.com

포스팅에는 인상깊은 일부 피드백만 기록할 것이다.

일단 이번 포스팅에선 '문자열 덧셈 계산기' 피드백을 기록할 것이다.


피드백 내용들을 하나하나 살펴보자.

 

이 부분은 페어 프로그래밍을 진행하면서 알렉스와 내가 의문을 가지고 각자의 리뷰어님께 질문해보고 답변을 공유하기로 약속했던 질문이다.

 

미르와 알렉스의 리뷰어 모두 if 조건문 내부의 name.isBlank() 자체가 명확하기 때문에 따로 메소드 분리를 통한 명확한 메소드명을 짓지는 않아도 괜찮아 보인다고 피드백해주었다 :)


꼭 private 메소드가 모든 public 메소드 아래에 있는 것이 아닌,

public 메소드로부터 분리된 private 메소드(즉, 연관있는 메소드)는 그 메소드 바로 밑에 놓는 것을 추천해주셨다.


numberStringList, numberList와 같이 변수명에 자료형이 언급되는 경우,

변수명도 변경해주어야 하는 귀차니즘과 함께, 다른 사람들이 보기에 가독성, 생산성 저하를 일으킬 수 있기 때문에

numbers와 같이 변경해주는 걸 추천해주셨다.

 

유저한테 숫자를 입력받을 때, String형으로 입력받기 때문에 numberStringList로 변수명을 지었는데,

피드백을 받고 inputNumbers로 변경해주었다. 


미르가 피드백해주기 전까진 사실 저런 기능이 있는 줄도 몰랐다...

알고 보니 엄청 유용한 어노테이션이어서 따로 공부한 후에 포스팅을 올렸다.

https://kth990303.tistory.com/261

 

[TDD 리팩토링] @ParameterizedTest을 이용한 테스트 메소드에서의 여러 값 검증

아래의 테스트 코드를 한 번 보자. 빈 문자열 또는 null일 경우 0을 반환해주게 하는 테스트 코드이다. 또 다른 테스트 코드도 한 번 보자. 방금 보여준 두 개의 테스트 코드는 모두 어딘가에 하자(

kth990303.tistory.com

덕분에 아래와 같이 코드를 변경했다.

@ParameterizedTest
@NullAndEmptySource
void 빈_문자열_또는_null값_입력(String input) {
    assertThat(StringCalculator.calculate(input)).isEqualTo(0);
}

꽤나 유용해서 이 코드뿐만 아니라,

다른 일부 테스트 메소드들에도 ParameterizedTest를 활용해주었다.


boxing? unboxing? 사실 잘 이해를 못했었다. (어서... 자바 책을 읽으면서 스트림 공부를 해야겠다...)

조금 공부해보니, 위 코드는 stream에서 primitive type인 int로 unboxing해주다가, 다시 Integer로 boxing해버리고 List로 묶어버린 것이었는데, 그럴 필요가 없었다.

mapToInt를 쓸 필요 없이, map으로 stream을 순회해주면서 Integer::valueOf로 언박싱할 필요 없이 Integer 래퍼 객체로 유지해주면 됐었다

 

도움 된 블로그: https://m.blog.naver.com/sthwin/221000179980

 

Integer.parseInt() vs Integer.valueOf() 차이

자바에서 스트링을 숫자 값으로 변형할 때 Integer.parseInt() vs Integer.valueOf() 이 메소드를 많이...

blog.naver.com


사실 그 전엔 람다식으로 작성했었는데,

인텔리제이에서 추천해주어서 메소드 레퍼런스로 바꾼 것이었다.

 

열심히 해서 중간표현식(?)이 익숙해지도록 해야겠다.


확실히 피드백을 받으면서 많이 성장하는 듯하다.

몰랐던 기능도 새롭게 알게 되고,

스트림, 자바 기본기를 충분히 갈고 닦아야겠다는 생각도 많이 든다.

 

다음 주에 좀 여유가 되면 모던 자바 인 액션을 정독해야겠다.

그 전에 2차 pr 날리고 피드백 받는 걸 목표로 열코해야지.

 

반응형