해결된 질문
작성
·
84
1
[질문 템플릿]
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와 같이 동사로 시작하거나 동사로 명명하는 것이 메서드의 행위를 파악하는 데에 용이합니다.
좋은 코드를 작성하기 위해 노력하시는 모습이 보기 좋네요 ^^
추가로 마틴 파울러의 '클린코드' 책과 인프런에 있는 좋은 클린코드 관련 강의들을 수강하시면 궁금증이 많이 해소 되실거라 생각합니다 😀
감사합니다.
답변 감사합니다!
추천해주신 클린코드 책도 꼭 한번 읽어보겠습니다!