인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

dngp87님의 프로필 이미지
dngp87

작성한 질문수

김영한의 실전 자바 - 기본편

문제와 풀이

접근제이자 문제2번 ShoppingCart 클래스 내 calculateTotalPrice 메서드 중 Item 인스턴스 생성 이유가 궁금합니다.

작성

·

38

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

 

안녕하세요. 수강 중 궁금한 내용이 있어 질문드립니다.

 

강사님 코드를 보면

private int calculateTotalPrice() {
    int totalPrice = 0;
    for (int i = 0; i < itemCount; i++) {
        Item item = items[i];
        totalPrice += item.getTotalPrice();
    }
    return totalPrice;
}

처럼 for 문 안에서 Item item = items[i];

로 새로운 인스턴스를 만드셨는데

 

문제 풀이를 보기 전 아래와 같이 인스턴스 생성 없이 풀었더니 똑같은 결과가 나왔습니다.

private int calculateTotalPrice(){
    int totalPrice = 0;

    for (int i = 0; i < count; i++){
        totalPrice += items[i].totalPrice();
    }

    return totalPrice;
}

 

혹시 강사님께서 새로운 생성하신 이유가 따로 있으실까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. dngp87님!

비슷한 질문이 자바 프로그래밍과 객체 지향 설계 원칙에 자주 등장합니다. 주어진 코드에서 Item item = items[i];를 사용하여 인스턴스를 특정 변수로 지정하는 것은 주로 가독성과 유지보수를 고려한 것입니다.

코드 가독성 및 유지보수

  1. 가독성: Item item = items[i]; 로 변수에 할당함으로써 코드의 가독성을 높일 수 있습니다. 변수 item을 사용하여 아이템에 대한 작업을 명확하고 직관적으로 표현할 수 있습니다. 이는 특히 복잡한 로직일 때 코드의 이해를 돕습니다.

  2. 유지보수: 만약 다른 작업이 추가되어 여러 번 items[i]에 접근해야 한다면 중복 코드를 줄일 수 있으므로 유지보수에 유리합니다. 이런 점은 객체지향 설계에서 중요한 고려사항입니다.

그렇더라도, 성능과 기능면에서는 두 코드 방식 모두 동일하며, 단순 루프에서는 실질적인 차이는 없습니다. 따라서, 어느 방식을 선택할지는 전적으로 개발자의 스타일과 코드의 맥락에 따라 달라질 수 있습니다.

아래에 유사한 질문을 다룬 인프런 컴뮤니티 게시물을 추천드립니다:
- “접근제어자 쇼핑카트 문제 질문드립니다.” : 이 게시물에서는 Item 객체 참조를 할당하는 부분에 대해 더 많은 정보를 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dngp87님의 프로필 이미지
dngp87

작성한 질문수

질문하기