[기본형과 참조형 문제풀이] 코드에 관한 질문이 있습니다.
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요!
항상 선생님께서 진행하시는 문제 풀이를 수강한 이후에, 혼자 좀 더 나은 방식으로 만들 수는 없을까 고민을 하는데요,
Method를 배우고 난 이후로, 코드를 대부분 Method로 넘겨서 작성하다 보니 '기능을 전부 Method로 넘겨서 작성하는 것이 진짜 잘 작성한 코드가 맞을까?' 하는 의문이 들었습니다.
아래는 마지막 문제를 제가 코딩한 내용인데요, 두 가지 질문이 있습니다.
실무적인 관점과 비교해서 아래의 코드처럼 작성하는 방식(모든 기능을 Method에 집약한 방식)이 괜찮은 방식인가요?
코드의 개선점이 있다면 어떤 점을 개선하면 좋을까요?
항상 좋은 강의 해주셔서 감사합니다!
package ref.ex;
import java.util.Scanner;
public class ProductOrderMain2 {
public static void main(String[] args) {
int num = orderCount();
ProductOrder[] orders = new ProductOrder[num];
createOrder(orders);
orderPrint(orders);
}
static int orderCount() {
Scanner scan = new Scanner(System.in);
System.out.println("-----------------------------------");
System.out.println(" 상품 등록 시스템 ");
System.out.println("-----------------------------------");
System.out.print("입력할 주문의 개수를 입력하세요: ");
int num = scan.nextInt();
System.out.println();
return num;
}
static void createOrder(ProductOrder[] orders) {
Scanner scan = new Scanner(System.in);
for(int i = 0; i < orders.length; i++) {
orders[i] = new ProductOrder();
System.out.println((i+1) + "번째 주문 정보를 입력하세요");
System.out.print("상품명: ");
orders[i].productName = scan.nextLine();
System.out.print("가격: ");
orders[i].price = scan.nextInt();
System.out.print("수량: ");
orders[i].quantity = scan.nextInt();
scan.nextLine();
System.out.println();
}
}
static void orderPrint(ProductOrder[] orders) {
int total = 0;
for(ProductOrder P : orders) {
System.out.println("상품명: " + P.productName + ", 가격: " + P.price + ", 수량: " + P.quantity);
total += (P.price * P.quantity);
}
System.out.println("총 결제금액: " + total);
}
}
답변 1
1
안녕하세요. jonghyeok097님, 공식 서포터즈 OMG입니다.
네. 올리신 코드처럼 메서드로 선언하여 읽기 쉬운코드를 작성하는 것은 좋은 방향입니다.
orderCount()에 상품 등록 시스템은 출력문으로써 orderCount()안에 넣기보다는 printBanner()로 별도로 만들면 좋을 것 같아요.
orderCount()의 주 기능이 주문 수량을 입력받는 역할을 한다면 inputOrderCount가 명시적인 네이밍 일 것 같아요. 혹은 입력 후 값을 반환하니 getOrderCount도 더 나은 선택일 것 같습니다.
메서드의 이름은 orderPrint가 아닌 printOrder와 같이 동사로 시작하거나 동사로 명명하는 것이 메서드의 행위를 파악하는 데에 용이합니다.
좋은 코드를 작성하기 위해 노력하시는 모습이 보기 좋네요 ^^
추가로 마틴 파울러의 '클린코드' 책과 인프런에 있는 좋은 클린코드 관련 강의들을 수강하시면 궁금증이 많이 해소 되실거라 생각합니다 😀
감사합니다.
질문있습니다
0
27
1
1번 문제 질문입니다.
0
32
1
음악플레이어 문제 중 코드질문
0
26
1
9장 상속 문제와 풀이 질문
0
38
1
강의 자료에 사소한 오타가 있습니다.
0
49
2
매서드 참조값 반환??
0
66
1
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
0
70
1
자바 기본편 - .(dot)에 관한 질문입니다!
0
85
1
공부방법
0
74
2
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
0
82
1
static method 질문
0
66
1
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
0
97
1
Method1에서 Student 객체
0
73
1
3강 18. null 질문
0
68
1
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
0
75
1
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
0
97
1
문의
0
104
1
9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다
0
90
1
상속과 그에 따른 메모리 구조 질문
0
62
1
call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다
0
74
1
수강기한
0
136
1
기본편 객체지향 프로그래밍에 대한 정의
0
86
1
섹션10 상속 메모리 구조 및 문제 관련 질문
0
87
1
추가 지식 학습
0
152
2





