드디어 우테코 뿌셔뿌셔 스터디 1주차가 지나갔다. 내가 부족한 부분을 발견하고 채우기 위해 시작한 스터디긴 한데, 내가 이렇게까지 부족한줄 몰랐달까...ㅎㅎ 하지만 비는 부분을 알면 채우는 건 자신있다! 어떤 부분을 채워넣을지 1주차에 알게된 점과 코드 리뷰를 통해 반영할 피드백을 정리해보려고 한다.
1주차 문제가 알고리즘 문제 느낌이다보니 처음에는 그냥 알고리즘 문제풀듯이 for문 안에 또 for, 그안에 또 if 이런식으로 풀었는데, 작년 5기 피어리뷰들을 보니 메소드 분리를 1주차부터 깔끔하게 하셨더라. 그래서 초반에는 메소드 분리에 힘을 썼던 것 같다. 한 메소드에 한 기능만!
기본적으로 제공하는 ApplicationTest도 있지만 기능별로 테스트를 해보는 것도 시도해봤다.
: 이런 어노테이션을 테스트에 쓰면 한번만 입력할 수 있다
참고글
스터디원의 코드에서 enum의 모든 값들을 list로 반환해줄 수 있는 방법을 봐서 정리해본다.
처음에는 제시된 대로 list<list<String>
등을 받아 일단 구현했는데 리팩토링을 하다보니 get(index).get(0) 이런 식으로 name을 가져오는 것도 불편했고, 다른 속성(예:email)을 가져오기위해 반복문을 돌리는 경우도 있었다.
이런 경우 member 객체로 만들어 쓰는 것이 더 낫다는 깨달음을 얻음!
다중조건정렬
RECOMMAND_LIST.sort(Comparator.comparing(User::getScore).reversed().thenComparing(User::getId));
테스트를 위해 public으로 해놓은 메소드들!
십진수
일의 자리 수
클래스 내에서 바뀔 일이 없는, 공통으로 쓰는, 중요한 숫자들을 상수화하는 것도 시도해보았다.
validPageStart 로직을 validateUtil이 갖을 권한이 있을까? 왜냐면 페이지 속성이 마이너스가 들어올 수 있게 되었다면 페이지 객체에서 수정하는 게 맞지 않을까.라는 고민! 이건 일급 컬렉션과 내 메소드와도 관련이 있을 것 같다.
char [] = word.toCharArray()
나중에 쓸 수 있을 것 같아서 일단 정리해놓기
다른 스터디원의 코드에서 이렇게 Stream으로 구현한 부분을 발견하고 나도 적용해보고자 했다.
생각보다 map 자체에 기능이 많았다. Stream의 기능과 비슷한 기능들이 map 자체에 있달까?
2주차 미션때는
그 기능 목록 단위로 커밋하기!
또 또 나온다. 한 방법으로 어떻게든 해결하려고 하는 거. 상수화도 그렇고, 메소드 분리도 그렇고, stream도 그렇고. 생각하고 효율적이고 간결하게 짜려고 하자!