한사랑 코딩회

프로젝트 TIL(1)

minOE 2025. 2. 20. 13:53
728x90

 

프로젝트 시작일 2/12 

이슈 : 사다리 타서 팀장이 됐다.

첫날에는 자진해서 팀장이 된 것이 아니라서 나는 허수아비 팀장이라고 생각했다. 실제로 그 날은 리더 역할도 하지 않았다.

나는 특정 튜터님께 하루에 한번씩 방문하는데 과정이 어떻든 나는 팀장이고 맡은 역할에 있어 최선을 다해야한다는 말씀을 듣고 팀장으로서 책임감이 생겼다. 내가 팀장으로서 가장 중요한 역할은 일정 관리 , 개발 과정 를 진행하는 것이다 이를테면 언제까지 구현하고,테스트 코드를 작성하고 , 디벨롭을 할 일정들을 먼저 정했다. 그리고 "개발 규약을 정하자" 이렇게 주제를 던져서 단계 단계 별로 이야기를 나눌 수 있는 분위기를 형성하였다. 그리고 모든 팀원의 상태를 확인하고 , 의견을 말하지 않으면 특정하여 의견을 말해달라고 하기도 하였다. 그럼 말을 하신다 .. 나는 평생 총대 매는 것을 기피해와서 서툰 팀장이지만 팀원들에게 최대한 가까이 가려고 노력했다.

 

 

프로젝트 초기에 ERD 설계도 작성을 진행했다. 

처음 설계한 것이고 

수정 본이다.

이렇게 수정한 이유는 나중에 후술하겠다 . 핵심은 "생명주기"를 같이하는 것은 관계 매핑이 필요하다.

 

나는 Order entity를 작성했고 팀원들 모두 자신이 작성한 entity 도메인을 맡았다.

팀원 A는 3개의 도메인을 하고있다. 개인적으로 묵묵히 팀에 기여하는 것이 감사하게 느껴졌다.

나머지 팀원들도 어떻게 리소스 낭비 없이 구현하며 추후의 확장성까지 생각하는 모습이 느껴진다. 그래서 저 중에 한 쌍의 관계도 끊어졌다.

 

 

 

우리 팀은 커밋 컨벤션 규약은 물론 브랜치를 팔때도 약속이 있다 . 메서드명, 컨트롤러 반환타입도 전부 통일해야하고 인테리제이에서 인덴트 까지 통일했다. 

튜터님께 말씀드리니, 당연한 것이라고 하셨다. 처음엔 익숙하지 않았지만 점점 이 방식이 좋다 !

 

- 코드 가독성 향상 

엄청 더러운 코드가 있었는데 튜터님께서 수정해주셨는데 마치 영어 구문 읽는듯이 코드를 짜라고 하셨다. 그리고 진짜 그렇게 리팩토링해주셨다.

public OrderResponseDto updateOrder(UUID orderId, OrderRequestDto requestDto) {
        // 1. 기존 주문 찾기
        Order order = findOrder(orderId);

        boolean isPaymentSuccess = paymentService.createMockPayment(orderId, order.getTotalPrice());

        if (!isPaymentSuccess) {
            throw new ForbiddenActionException("결제 실패");
        }

        // 2. 기본 정보 업데이트
        order.setDeliveryAddress(requestDto.getDeliveryAddress());
        order.setDeliveryRequest(requestDto.getDeliveryRequest());
        order.setOrderType(OrderType.valueOf(requestDto.getOrderType()));
        order.setOrderStatus(OrderStatus.valueOf(requestDto.getOrderStatus()));


        // 3. 새로운 OrderItem 추가
        List<OrderItem> newOrderItems = getOrderItems(requestDto, order);
        order.setOrderItems(newOrderItems);


        // 5. 총 주문 금액 업데이트 후 저장
        int totalPrice = newOrderItems.stream().mapToInt(OrderItem::getMenuPrice).sum();
        order.setTotalPrice(totalPrice);


        return new OrderResponseDto(order);

    }
    
    
        private List<OrderItem> getOrderItems(OrderRequestDto requestDto, Order order) {
        return requestDto.getMenu().stream() //requestDto.getMenu()에서 OrderItemRequestDto 리스트를 가져옴.
            .map(itemDto -> {
                MenuItem menu = menuItemService.getMenuById(itemDto.getMenuId());
                return new OrderItem(
                    menu.getId(),
                    menu.getName(),
                    menu.getPrice(),
                    itemDto.getQuantity(),
                    order
                );
            })
            .collect(Collectors.toList());

    }

 

가독성을 생각하며 코드를 짜자 ...

 

팀원들은 자신의 도메인 CRUD를 끝내서 리팩토링 중이다. 나는 아직 팀원 A와 협의해야 할 것이 남아있다.. 

사실 말이 협의지 팀원 A에게 코드를 고쳐달라는 말을 해야하는데 어떻게해야 좋게 전달할지 고민이다. 

현업에서는 이런일이 비일비재하다고 하니 나도 연습이라치고 ,, 잘 말해보자 ! 정말 고민을 많이 하고 실제로 A가 의도한대로 코드를 짠 후에 하는 질문이니 .. 이해해주리라 믿는다 . A는 믿음직한 사람이다

 

 

갑자기 글을 적는 이유는 .. 사다리로 또 내가 발표를 맡게되서 기록 차원에서 적는다. 진짜 나 팀장인가보다 ..

우리 팀원들이 나를 믿어줄 수 있도록 행동할 것이다. 

 

아 그리고 초기부터 함께 공부한 B님과의 정보 교류가 너무 즐겁다. 소중한 인연이다.

 

728x90