오늘은 우아한테크코스 4기 활동이 본격적으로 시작된 두번째 날이다.
오전에 데일리 미팅을 진행하고, 오후에는 스터디룸을 대여해서 알렉스와 함께 하루종일 페어 미션을 진행하였다.
알렉스는 코딩 경험이 풍부하여 많은 부분에서 배울 점이 많았으며, 굉장히 친절하신 형이었어서 재밌게 작업하면서 많은 점을 배울 수 있었다.
오늘은 페어 프로그래밍을 통해 배운 점을 기록해보려 한다.
1. java.lang.String 클래스의 isEmpty()와 isBlank() 차이
자동차 경주 미션을 진행하면서, 자동차 이름이 공백일 때와 빈 문자열일 때 예외처리를 해주어야 하는 상황이 발생했다.
이 때 String의 isBlank() 메소드를 사용하면 빈 문자열일 때 뿐만 아니라 공백만 포함돼있을 때도 true를 리턴해준다.
빈 문자열 (문자열의 길이가 0)일 때만 true를 리턴해주는 isEmpty() 메소드와는 다르게 공백만 있을 때도 true를 리턴해주는 isBlank() 메소드를 잘 기억하면 좋을 듯하다.
주의할 점은 isBlank() 메소드는 JAVA 11 이상 버전에서만 사용가능하다.
도움된 블로그: https://hianna.tistory.com/531
2. String에서 split으로 빈 문자열도 반환하고 싶을 경우
delimiter을 "," 기준으로 split할 때 빈 문자열도 반환하고 싶은 경우는 어떻게 할 수 있을까?
split에서 두 번째 인자로 -1을 적어주면 빈 문자열도 반환할 수 있다!
userInput.split(NAME_DELIMITER); // 빈 문자열은 반환하지 않음.
userInput.split(NAME_DELIMITER, -1); // 빈 문자열도 반환.
두 번째 인자 i는 원래 i번까지만 split 하라는 의미로 인자를 전달하는 것이나,
-1을 전달하게 되면 오히려 빈 문자열도 반환하게 되는 의미가 된다.
3. 메소드 인자로 받는 변수가 불변이라면 생성자 파라미터를 통해 받아버리는 것도 생각해보자.
메소드를 통해 인자를 받는 변수가 어차피 불변이라면?
예를 들어 자동차 name이 앞으로 변할 일이 없는 경우라면 아예 생성자 파라미터를 통해 받아버리고, 클래스 상단에 private final String으로 받는 것도 하나의 방법이다.
메소드 인자로 넘겨주면서 받는 방식 대신, 생성자 파라미터를 통해 받고 final로 확실하게 박아버리면 그 불변값은 변경의 여지를 없애버릴 수 있기 때문에 더욱 안전한 코드로 작성할 수 있기 때문이다.
4. 조건문 안은 한눈에 파악할 수 있는 메소드명으로 가독성을 높이자.
커스텀 구분자가 존재하는지를 파악하는 조건문이다.
따라서 separator signature가 존재할 경우 커스텀 구분자가 존재하기 때문에 아래와 같이 코드를 작성하였었다.
원래 코드:
if (input.contains(CUSTOM_SEPARATOR_START_SIGNATURE) && input.contains(CUSTOM_SEPARATOR_END_SIGNATURE))
그러나, 알렉스가 위 코드보단 따로 메소드명을 hasCustomSeparator()와 같이 한눈에 알아볼 수 있게 작성해주고, 위 조건문 내부 식을 메소드분리 해주면 더 가독성이 높아지지 않을까 추천해주어 아래와 같이 리팩토링해주었다.
리팩토링 후 코드:
if (hasCustomSeparator(input)) { ... }
// private 메소드
private static boolean hasCustomSeparator(String input) {
return input.contains(CUSTOM_SEPARATOR_START_SIGNATURE) && input.contains(CUSTOM_SEPARATOR_END_SIGNATURE);
}
확실히 알아보기 쉬워졌다.
5. 인텔리제이의 여러 단축키
ctrl + alt + m: 메소드 추출하여 분리하고 메소드 이름 설정.
ctrl + alt + c: 변수를 상수로 뽑아내고 이름 설정.
ctrl + alt + v: 반환하는 값을 지역변수로 받아오고 이름 설정.
금요일 18시까지 PR 제출 마감기한이었는데, 다행히 오늘 PR을 바로 제출할 수 있었다 ㅎㅎ
물론, PR 순서가 빠르다고 좋은 건 절대 아니고, 얼마나 클린하게 코드를 작성했는지가 훨씬 중요하기 때문에 리뷰어분께 리뷰를 받으면서 더욱 더 성장하고 싶다.
나의 리뷰어 분은 미르인데, 우테코 1기 선배님이시고 지금은 좋은 회사에 재직중이신 선배님이셨다!
어서 리뷰어분께 피드백을 받아 더 많이 성장하고 싶다 :)
그 외에 JAVA 기본기 (불변객체, Collections, java api, Stream)에 대해서도 굉장히 많이 배우고 성장할 수 있었다.
시간날 때 java 기본서를 좀 더 꼼꼼히 읽고 공부하는 시간을 가져봐야겠다고 절실히 느꼈다.
알렉스와 함께 페어 작업하면서 깃허브 맞팔도 하고, 얻은 것도 굉장히 많고, 저녁도 같이 먹으면서 미션을 성공적으로 마무리할 수 있어서 정말 만족스러운 하루였다 ㅎㅎ
이제 내일은 코드 리뷰 피드백을 보며 리팩토링하는 시간과, 보이는라디오 시나리오 회의시간을 가지면 이번주 평일이 마무리될 듯하다~
'JAVA > 우아한테크코스 4기' 카테고리의 다른 글
[220211] 우아한테크코스 4기 1주차 활동 후기 (4) | 2022.02.12 |
---|---|
[220211][JAVA] 페어 협업미션 리뷰어의 피드백_문자열 덧셈 계산기 (0) | 2022.02.11 |
[220209] 우아한테크코스 4기 첫째날 후기 (0) | 2022.02.09 |
[220208] 우아한테크코스 4기 시작 OT 오리엔테이션 (0) | 2022.02.08 |
[220111] 우아한테크코스 웹 백엔드 사전 준비 (7) | 2022.01.11 |