벌써 우아한테크코스 2주차가 지났다.
정말 시간 가는지 모르고 지냈고, 많은 것을 배웠다.
감기에 걸려 이틀간 전기장판 위에서 시간을 보내고,
급하게 3주차 미션을 들어갔다... 이번 2주차는 컨디션 조절에 실패했기 때문에 조금 늦은 회고를 시작한다.
2주차 자동차 경주 미션은 1주차의 경험 덕분인지 생각보다 수월했다.
이번 미션에 작성한 기능 명세서이다.
1주차와는 확연히 다르게 자세하게 쓰려고 노력했고, 또 하나하나 보면서 기능을 작성했다.
다행히 2주차 미션의 기능 자체는 빠르게 완성해서 다른 부분에 집중이 가능했다.
기능의 분리였다.
구현을 완료한 후 기능의 분리에 생각보다 어마어마한 시간을 쏟았지만......
일단 MVC라는 개념 자체를 잘 모르고 분리하다 보니
가독성 측면에서 엄청난 손해를 봤다.
이미 이전 블로그에서 한번 다뤘기 때문에 넘어가겠다.
혹시 누군가 이 글을 본다면 보는 것을 추천하지는 않지만 궁금할 수도 있으니 링크를 남긴다 😭
이번 과제를 진행하며 가독성 외에 다른 배운 점은 무엇인가?
가독성 측면과 같은 이야기 같지만 문제되는 점을 발견했다.
두서 없이 코드를 나눌 생각만 하다 보니 여기저기 중복된 코드들이 생겨났다.
두 개의 코드는 작성 방식은 다르지만 비슷한 기능을 하는 코드이다.
public static void checkIsNotDuplicated(List<String> cars) {
if (new HashSet<>(cars).size() != cars.size()) {
throw new IllegalArgumentException("중복된 이름의 차량이 존재합니다.");
}
}
public static void carNameDuplicateException(Map<String, Integer> carPositionTable, List<String> carNames) {
if (new HashSet<>(carNames).size() != carNames.size()) {
if (carPositionTable.size() != carNames.size()) {
throw new IllegalArgumentException("중복된 이름의 차량이 존재합니다.");
}
}
}
위의 코드만 사용한다면 단일 메서드만을 사용해 예외처리를 하기 때문에
이렇게 중복될 코드가 아니지만 마음만 앞선 결과였다.
2주차의 모든 부분에서 IllegalArgumentExeption을 사용했다.
어떠한 예외 상황이 벌어지냐에 따라 적절한 예외 처리를 사용을 해야한다.
사실 이미 이전 글에서 회고와 다름없는 글을 썼기 때문에
조금 짧은 감이 없지 않아 있다.
이 글을 쓰면서 다시 코드를 봤지만 3주차 미션을 진행하며 좀 더 공부를 했기 때문인지
역시 고쳐야하는 부분들이 많이 보였다. 불필요한 다른 연산이라던가...
아쉽지만 최선을 다했으니 후회는 없다.
컨디션 관리에 조금만 더 신경을 쓰고, 남은 기간 더욱 미친듯 달려보자 🏃