[본캠프] 16일차

윤영범·2026년 3월 31일

커머스 프로젝트 관리자까지 진행하면서 어려웠던점

Code Clean

기존에 start()부분에 모든 기능들을 집어넣으면서 가독성이 불편해져서 어떤코드가 어디있는지 찾이 어려운부분이 있었다

            if (num > 0 && num <= categories.size()) {
                Category catenum = categories.get(num - 1); // 인덱스 0부터시작 선택
                showProducts(catenum);
            } else if (num == 4 && useCart) {//장바구니확인
                cartlist.showCartlist();
            } else if (num == 5 && useCart) {       //장바구니확인
                cartlist.removeCartlist();
            } else if ((num == 4 || num == 5) && cartlist.getCartlist().isEmpty()) {
                System.out.println("장바구니가 비었습니다");
            }
            //-----------------------------------------장바구니끝--------------------------------------------------------
            //-------------------------------------- 관리자 -------------------------------------------------------------
            else if (num == 6) {
                if (admin.CheckPassword()) {
                    admin.startAdmin();
                }
            } else if (num == 0) {
                break;


            } else {
                System.out.println("잘못된 입력입니다");
            }
        }
    }

코드를 기능에 맞게 메소드로 빼버려서 어떤코드를 찾을때 쉽게 찾을수있도록 개선했다
이작업을 코드 클린이라고 한다

Admin 클래스 역할 정의

Admin 클래스에 모든 기능을 넣으려고 했다.

비밀번호 입력
비밀번호 검증
실패 횟수 관리
상품 추가/수정/삭제
출력 처리

역할이 너무 많아짐
유지보수 어려움

일부 기능을 메소드로 빼버림
Admin → 관리자 기능(비즈니스 로직) 담당
CommerceSystem → 입력/출력 및 흐름 제어

✔ 역할 분리 중요

            switch (adminChoice) {
                case 1:
                    addProduct();
                    break;
                case 2:
                    updateProduct();
                    break;
                case 3:
                    deleteProduct();
                    break;
                case 4:
                    showAllProduct();
                    break;
                case 0:
                    return;
                default:
                    System.out.println("잘못된 선택입니다 다시 입력해주세요");
                    break;
            }

상품 수정삭제 구조

아무래도 List 와 진짜 객체간의 혼동이사항이 좀 많이오는거같다 카테고리 list로 product 리스트를 찾고 그안에 프로텍트를 꺼내와 수정하고 삭제하는 작업이 for문이 2번씩들어가는 구조가 많다보니까 헷갈리는부분이 정말많았다

        for (Category category : categories) {
            System.out.println(category.getCategory());
            for (Product product : category.getProducts()) {
                System.out.printf("%-15s | %,10d | %s%n",
                        product.getName(),
                        product.getPrice(),
                        product.getInfo());

이중 포문 구조

느낀점

처음에는 코드가 길어지고 고칠 부분이 많아서 어디서부터 손대야될지몰라 어려움을 느꼈다.
가독성이 힘들어서
하지만 오히려 이 과정에서 코드 구조를 보는 눈이 생기고 있다는 것을 느꼈다.
기능부분을 확실히 나눠서 나중에 만들때는 더 깔끔하게 보기좋은 코드로 만들고싶다

내일목표
Enum클래스 적용해서 할인계산 출력
예외처리 못다한 부분 생각해서 정리
관리자 수정,삭제 부분 디버깅

0개의 댓글