2015-05-24 14 views
5

Đây có thể là một câu hỏi ngớ ngẩn nhưng tôi đang tự dạy mình từ một cuốn sách và tôi nhận thấy rằng rất nhiều ví dụ có câu lệnh in bên trong một phương thức khác với chính. Tôi đã tự hỏi nếu nó làm cho một sự khác biệt, nơi bạn đặt nó vì vậy tôi dán chương trình tôi đã làm việc trên khi câu hỏi xảy ra với tôi. Nó sẽ có hiệu quả hơn cho tôi để có phương pháp getArea in khu vực hoặc để nó trong chính?Có hiệu quả hơn khi có một bản in trong một phương thức bên cạnh chính hay không?

private static Scanner in; 
private static double s; 
private static double a; 

public static void main(String[] args) { 
    in = new Scanner(System.in); 
    DecimalFormat two = new DecimalFormat("#.##"); 
    System.out.println("Enter the length from center to vertex: "); 
    double r = in.nextDouble(); 
    s = getSide(r); 
    a = getArea(s); 

    System.out.println("The area of a pentagon of radius "+r+" is "+two.format(a)); 

} 

public static double getSide(double radius){ 
    double side = 2 * radius * Math.sin((Math.PI)/5); 
    return side; 
} 

public static double getArea(double side){ 
    double area = (5 * Math.pow(side, 2))/(4 * Math.tan((Math.PI)/5)); 
    return area; 
} 

Trả lời

9

Không có sự khác biệt về hiệu quả. Điều này có thể được nhìn thấy bởi thực tế là một chức năng không thể tìm ra những chức năng khác được gọi là nó. Nó không thể hành xử theo một cách khác. (Ngoại trừ ngăn xếp nội tâm và nội tuyến ...)

Kiến trúc tốt hơn là cố gắng giữ cho các phương pháp tinh khiết theo nghĩa là chúng không gây ra tác dụng phụ nếu không cần thiết. Điều đó làm cho chương trình đơn giản hơn để hiểu. Một hàm thuần túy có một số giá trị và trả về một giá trị mà không thay đổi bất kỳ giá trị nào khác. In ấn là một tác dụng phụ, vì vậy hãy cố gắng giữ nó khỏi các chức năng tính toán.

+0

Cảm ơn bạn =) Đó chính là điều tôi đang thắc mắc. Độ nghiêng của tôi là đặt nó vào chính để các phương pháp chỉ phải thực hiện một điều nhưng tôi chưa bao giờ bắt gặp bất cứ điều gì để xác minh rằng đó sẽ là cách tốt nhất để đi về nó. –

1

Thao tác in là tính năng ghi nhật ký đơn giản và không có bất kỳ hình phạt/lợi ích nào về hiệu suất. Bất cứ khi nào bạn viết mã, bạn có thể đặt câu hỏi tiếp theo cho chính mình:

  • Mã này có nên được người khác sử dụng không? (không cần đăng nhập)
  • Nếu mã này được gỡ lỗi bằng nhật ký ứng dụng (cần phải đăng nhập)
  • Thông báo bạn muốn in sẽ nói về điều gì? (Những gì sẽ được thực hiện được chèn vào trước phương thức. Kết quả thực hiện sẽ được chèn vào sau phương thức. Quá trình thực hiện phải được chèn vào chính phương thức đó)
Các vấn đề liên quan