기존에 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 → 관리자 기능(비즈니스 로직) 담당
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클래스 적용해서 할인계산 출력
예외처리 못다한 부분 생각해서 정리
관리자 수정,삭제 부분 디버깅