서론

마지막 주 미션이 드디어 끝났다. 프리코스 과정은 제출만 하면 끝나겠지만 나한테는 아직 끝나지 않는 것 같다. 이번 주차도 배운 것들은 많았다. 하지만 배운 내용들이 아직 머릿속에 정리가 되지 않았다. 무엇이든 글로 작성하면서 정리해야만 알고 있다는 느낌이 든다. 글로 작성했어도 제대로 사용한다고 자신있게 대답은 못하겠지만, 글 작성만으로도 차이가 크다. 그래서 학창시절에 공부잘하는 애들이 글 잘쓰고 요약을 잘했나 보다. 아무튼 아직 우테코 프리코스를 하면서 알게된 것들을 모두 흡수하려면 아직 프리코스는 끝나지 않았다. 아 물론 1차 코테도 있고, 우테코 선발과정이 완전히 끝나지 않았다. 하지만 미션 과제들은 끝났고, 코드리뷰를 하면서 계속 리팩토링 할 예정이다.

이번 주 나는 어떤 것들을 알게 됐을까?

정리

1. 정확한 이유를 모르고 사용했다.

코드 리뷰를 보면서 좋아보이는 것들은 따라하려고 했다. 그런데 시간이 부족하단 이유로 몇 가지 공부를 하지 않고 사용했다. 그 결과로 리뷰에 사용한 이유를 묻는 질문이 달렸다.

예를 들어 Custom Excpetion을 사용하는 이유이다.

class CustomException extends IllegalArgumentException {
    public CustomException(String errorMessage) {
        super(errorMessage);
    }
}

단순히 이 클래스 하나 만들고, CustomException을 그냥 던지게 해놓았다. 표준 예외가 있고 사용하는 이유와 예외처리를 커스텀하는 방식과 이유를 알아보지 않고 사용했다. 마지막 주도 이렇게 사용하고 있었다. 표준 예외를 사용하고 서비스 계층 예외에 대한 특수한 목적에 대해서 알고 사용하자.

2. 자바 API 적극 활용

BigDecimal에 대해서 알고 있었지만 해당 라이브러리에 어떤 기능이 있는지 공부하진 않았다. 그래서 사용안하고 있었는데, 이번에 코드리뷰가 달렸다. BigDecimal을 사용해서 나눗셈을 하면 좀 더 정확한 값을 얻을 수 있다고 하셨다. 더 알아보고 글로 정리해야겠지만, BigDecimal은 소숫점에 대한 정확한 값과 큰 숫자 처리를 위해 사용된다고 한다. 그래서 금융쪽 도메인은 필수적으로 사용하는 라이브러리라고 나와있다. 4주차에는 소수점 또는 큰 값을 계산하는 경우는 없어서 사용하지는 않았다.

코딩을 잘하는 사람들 공통점 중 하나는 해당 언어 API를 잘 알고 있다고 한다.

3. final 키워드

final을 사용하며 변수 값을 재할당하지 못하는 방식에 대해서 공통 피드백이 있었다. 값을 바꾸지 않게 해야하는 목적은 알겠지만 어디까지 사용해야하는 거지? 라는 의문이 들었다. 사실 아직 자세히 알아보지 않았다. 알게 됐다고 보긴 어렵겠지만 공부는 스스로 질문이 생각날때부터 배움의 시작이다. 그리고 시작은 반이다.

4. 기능 정리와 객체를 분리하는 연습

1주차 피드백 영상에 나왔던 방식으로 기능 정리를 했다. 좀 더 간략하게 기능 정리를 하고나서 좀 더 요구사항을 잘 파악하게 됐다. 그리고 정리된 내용으로 도메인 클래스와 클래스 분리가 전 주차 보다 수월해졌다. 중간에 유효성과 수량에 대해서 생각을 못해서 도메인 클래스를 변경했지만 어차피 역할 분리를 위해 리팩토링을 했어야 해서 다행이었다. 하지만 아직 이것 저것 생각을 많이하고 익숙하지 않다. 그러다 보니 구현이 오래 걸린다. 1차 합격을 하면 코딩테스트를 준비해야하는데 구현이 중요한 코딩 테스트를 어떻게 준비할지 많은 고민이 든다.

아쉬운 점

1. 클래스명, 메소드명 짓기

이름 짓는게 제일 어렵다. 이름을 짓고도 맘에 들지 않는다. 해당 클래스 역할을 잘 나타냈는지 많이 고민한다. 하지만 맘에 들지 않았다.

2. 의존성??

마지막에 model이었던 패키지명을 domain으로 변경했다. 그런데 변경 사항이 테스트 파일 포함 26개나 나왔다. 이러면 해당 도메인에 의존하고 있다고 볼 수 있지 않을까? 그러면 이렇게 서비스 계층 밑으로 까지 의존적이라면 좋지 않는 것 아닐까? woo-precourse-3-picture-1.png

DTO가 필요한 이유라고 생각이 들었다.


마무리

이번 주차는 배운 게 아닌 알게 된 것은 많지만 그 만큼 질문도 많이 생겼다. 좋은 결과는 아닌 것 같다. 내가 이번 주에 공부를 많이 하지 않은 방증이라고 생각한다. 아쉽게도 아쉬움이 많은 한 주였다.

1차… 합격할 수 있을까…

합격하고 싶은 마음은 크지만 합격 여부와 상관 없이 코드 리뷰와 리팩토링은 계속하자.
지금 실력에선 내가 얻는 이점이 많다.