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

노력모아개발자님의 프로필 이미지
노력모아개발자

작성한 질문수

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

문제와 풀이

접근제어자 2번째 문제 풀이

작성

·

47

·

수정됨

0


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

[질문 내용]

image.png


 

이런식으로 작성하는 건 나중에 문제가 될까요 ?

답변 2

0

안녕하세요. 노력모아개발자님, 공식 서포터즈 OMG입니다.

 

강의 코드와의 차이점이 2가지가 보이네요

1) 인덱스 기반의 for문이 아닌 향상된 for문 방식 사용

2) totalCost변수를 메서드 내부가 아닌 외부에 선언

 

우선 1번의 경우는 문제 없이 잘 동작할 것 같고, 향상된 for문을 사용하신 것도 좋은 선택입니다.

 

2번의 totalCost변수가 외부에 선언하지 않고 메서드 내부에서

선언하여 현재 출력하는 상품의 전체 가격을 출력하는 것을 고려하시면 좋습니다.

totalCost를 메서드 외부 필드 영역에 선언하셨는데, 이럴 경우 totalCost의 값이 변경될 여지가 있어 의도치 않은 값이 출력될 수 있기 때문입니다.

 

감사합니다.

0

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

노력모아개발자님께서 작성하신 displayItems 메서드에 대한 질문을 주셨네요. 코드를 작성하신 방식은 기본적인 기능에 문제가 없으며, 아이템의 정보를 출력하고 총합을 계산하는 로직으로 구성되어 있습니다.

하지만 몇 가지 고려할 점이 있습니다:

  1. Null 체크: 현재 코드는 items 컬렉션에서 null이 발견되면 루프를 중단합니다. 만약 null이 중간에 있을 경우, 이후의 아이템들은 처리되지 않을 수 있습니다. 따라서 null을 발견하더라도 루프를 이어가도록 수정하거나, null을 허용하지 않도록 컬렉션을 관리하는 방법이 있습니다.

  2. 가독성 및 유지보수:

    • 메서드가 너무 많은 일을 하는 경우, 코드를 분리하여 가독성을 높일 수 있습니다. 예를 들어, 총합 계산 로직을 별도의 메서드로 분리할 수 있습니다.
    • 이렇게 하면 메서드의 책임이 분리되어 코드의 유지보수가 쉬워질 뿐만 아니라, 테스트하기도 용이해집니다.
  3. 동시성 문제: items가 멀티스레드 환경에서 접근될 수 있다면, 동시 접근에 대한 주의가 필요합니다. 이 상황에서는 동기화를 고려해야 합니다.

위의 참고 사항들은 코드의 현재 상태에서는 문제가 아니지만 이후 확장성을 고려할 때 중요한 부분입니다. 코드의 기능이 올바르더라도, 더 쉽고 안전하게 수정할 수 있도록 하는 방법을 찾는 것이 좋습니다.

추가적인 논의와 관련하여, 다른 학습자분들이 아래 질문 게시물에서 비슷한 상황에 대해 논의했던 내용을 참조해 보시는 것도 좋습니다:
- 접근제어자 파트 문제풀이질문 displayItem메서드

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

노력모아개발자님의 프로필 이미지
노력모아개발자

작성한 질문수

질문하기