Everyday Dev System

Kiosk 코드 피드백 반영 본문

내배캠 주요 학습/매일 공부

Kiosk 코드 피드백 반영

chaeyoung- 2023. 6. 7. 18:33

 

튜터님의 피드백

- 객체지향적이라는 개념이 이해하기 쉽지 않으셨을것 같습니다.

객체의 특성들을 도출해내고 그것들을 공통적으로 사용할수 있도록 그룹화 해보는 연습을 많이 하시면 좋을것 같습니다.
- Food에서 printMenu를 오버로드해서 재구현을 하신것이 결국 객체지향적으로 잘 구현하신 겁니다.
- 코드에 대한 주석과 흐름이 잘보이도록 깔끔하게 구현하시는것 같습니다.

1. Food를 배열로 선언해서 만들기보다는 각 Food마다 new를 통해 인스턴스화해서 사용하는것이 조금더 객체 지향적이라고 볼 수 있겠네요.

2. - 다중배열보다는 List나 Map을 사용하길 추천드립니다.
다중배열을 사용하게 되면 index처리를 하게되면서 가독성이 떨어지게 됩니다.

3. Food에서 super 생성자를 호출하여 객체 생성을 했기때문에 아래 두줄은 불필요해보입니다.
this.name = name;
this.content = content;

4. public List<Order> orderLists = new ArrayList<>(); // 주문을 여러개 받기 위한 list
이 부분은 Main 메서드 안으로 들어오는것이 맞는것 같습니다.

5. Main main = new Main(); 본인 자신을 인스턴스화 할 필요 없어보입니다.

6. 변수명을 f와 같이 선언하기보다는 명확하게 food로 써주시는게 좋을것 같네요.

7. 구현에 대한 기능별 변화가 있을때마다 커밋 히스토리를 남겨주는 것이 좋을것 같습니다.

8. 향후에는 리드미 파일도 작성을 해주시면 좋을것 같습니다.

 

 

 

1. Food를 배열로 선언해서 만들기보다,

    각 Food마다 new를 통해 인스턴스화해서 사용하는것이 조금더 객체 지향적이라고 볼 수 있겠네요.

2. 다중배열보다는 List나 Map을 사용하길 추천드립니다.
    다중배열을 사용하게 되면 index처리를 하게되면서 가독성이 떨어지게 됩니다.

 

Before Code : 

		Food[][] foods = new Food[4][5];
        
        foods[0][0] = new Food("ShackBurger", 6.9, "토마토, 양상추, 쉑소스가 토핑된 치즈버거");
        foods[0][1] = new Food("SmokeShack", 8.9, "베이컨, 체리 페퍼에 쉑소스가 토핑된 치즈버거");
        foods[0][2] = new Food("Shroom Burger", 9.4, "몬스터 치즈와 체다 치즈로 속을 채운 베지테리안 버거");
        foods[0][3] = new Food("Cheeseburger", 6.9, "포테이토 번과 비프패티, 치즈가 토핑된 치즈버거");
        foods[0][4] = new Food("Hamburger", 5.4, "비프패티를 기반으로 야채가 들어간 기본버거");

        foods[1][0] = new Food("Vanilla Icecream", 1.0, "바닐라 아이스크림");
        foods[1][1] = new Food("Choco Icecream", 1.0, "초코 아이스크림");

        foods[2][0] = new Food("Lemonade", 1.5, "상큼한 레모네이드");
        foods[2][1] = new Food("Coke Cola", 1.5, "코카 콜라");
        foods[2][2] = new Food("Zero Soda", 1.5, "제로 코카 콜라");

        foods[3][0] = new Food("Cass", 1.5, "카쓰");
        foods[3][1] = new Food("Qingtao", 1.5, "칭따오");
        foods[3][2] = new Food("Draft Beer", 1.5, "생맥주");

 

 

 

 

3. Food에서 super 생성자를 호출하여 객체 생성을 했기때문에 아래 두줄은 불필요해보입니다.

Before Code : 

	// 생성자 메서드 영역
	public Food(String name, double price, String content) {
        super(name,content);
        this.name = name;
        this.price = price;
        this.content = content;
    }
    
    public Food(String name, double price, String content,int foodCnt) {
        super(name,content);
        this.name = name;
        this.price = price;
        this.content = content;
        this.foodCnt = foodCnt;
    }

After Code : 

	// 생성자 메서드 영역
	public Food(String name, double price, String content) {
        super(name,content);
        this.price = price;
    }
    
    public Food(String name, double price, String content,int foodCnt) {
        super(name,content);
        this.price = price;
        this.foodCnt = foodCnt;
    }

 

 

 

 

4. public List<Order> orderLists = new ArrayList<>(); // 주문을 여러개 받기 위한 list
이 부분은 Main 메서드 안으로 들어오는것이 맞는것 같습니다.

5. Main main = new Main(); 본인 자신을 인스턴스화 할 필요 없어보입니다.

 

Before Code : 

public class Main {
    public List<Order> orderLists = new ArrayList<>(); // 주문을 여러개 받기 위한 list

    public static void main(String[] args) throws InterruptedException {
    	Main main = new Main();
        main.orderLists = new ArrayList<>();
        
        // 이하 코드 생략
    }
}

 

After Code : 

public class Main {
    public static void main(String[] args) throws InterruptedException {

        List<Order> orderLists = new ArrayList<>(); // 주문을 여러개 받기 위한 list
        Scanner sc = new Scanner(System.in);
        
        // 이하 코드 생략
     }
}

'내배캠 주요 학습 > 매일 공부' 카테고리의 다른 글

REST API 설계 규칙  (0) 2023.06.16
특강 회고  (0) 2023.06.15
키오스크 version.2 : 팀과제 현황  (0) 2023.06.07
메모장 팀과제 현황  (0) 2023.06.02
Stack으로 Queue 구현하기  (0) 2023.06.01