2015-05-24 6 views
5

यह एक बेवकूफ सवाल हो सकता है लेकिन मैं खुद को एक पुस्तक से पढ़ रहा हूं और मैंने देखा कि कई उदाहरणों में मुख्य के अलावा किसी अन्य विधि के अंदर प्रिंट स्टेटमेंट है। मैं सोच रहा था कि क्या इससे कोई फर्क पड़ता है जहां आप इसे डालते हैं, इसलिए मैंने उस प्रोग्राम को चिपकाया जिस पर मैं काम कर रहा था जब सवाल मुझसे हुआ था। क्या मेरे लिए getArea विधि क्षेत्र को मुद्रित करने या इसे मुख्य रूप से छोड़ने के लिए मेरे लिए अधिक कुशल होगा?क्या मुख्य के अलावा किसी विधि में प्रिंट स्टेटमेंट रखना अधिक कुशल है या इससे कोई फर्क पड़ता है?

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; 
} 

उत्तर

9

दक्षता में कोई अंतर नहीं है। यह इस तथ्य से देखा जा सकता है कि एक फ़ंक्शन यह नहीं पता कि यह अन्य फ़ंक्शन कहलाता है। यह संभवतः एक अलग तरीके से व्यवहार नहीं कर सकता है। (स्टैक आत्मनिरीक्षण और इनलाइनिंग के अलावा ...)

आर्किटेक्चररी तौर पर यह समझने के लिए बेहतर है कि वे तरीकों को शुद्ध रखने की कोशिश करें कि अगर साइड इफेक्ट्स की आवश्यकता नहीं है तो इसका दुष्प्रभाव नहीं होता है। इससे प्रोग्राम को समझने में आसान बनाता है। एक शुद्ध कार्य कुछ मूल्य लेता है और किसी और चीज को बदले बिना मूल्य देता है। प्रिंटिंग एक दुष्प्रभाव है इसलिए इसे गणना-शैली कार्यों से बाहर रखने का प्रयास करें।

+0

धन्यवाद =) यही वही है जो मैं सोच रहा था। मेरा झुकाव इसे मुख्य रूप से रखना था ताकि विधियों को केवल एक चीज करना पड़े लेकिन मैं कभी भी यह सत्यापित करने के लिए कुछ भी नहीं आया कि यह इसके बारे में जाने का सबसे अच्छा तरीका होगा। –

1

प्रिंट ऑपरेशन एक साधारण लॉगिंग सुविधा है और इसमें कोई प्रदर्शन दंड/लाभ नहीं है। जब भी आप कोड लिखते हैं तो आप अपने अगले प्रश्न पूछ सकते हैं:

  • क्या यह कोड किसी और द्वारा उपयोग किया जाना चाहिए? (कोई लॉगिंग डालना नहीं चाहिए)
  • क्या इस कोड को एप्लिकेशन के लॉग का उपयोग करके डीबग किया जाना चाहिए (लॉगिंग डालना चाहिए)
  • आप जिस संदेश को प्रिंट करना चाहते हैं, उसके बारे में क्या बताएगा? (विधि के पहले क्या किया जा रहा है। विधि के बाद निष्पादन का परिणाम डाला जाना चाहिए। निष्पादन की प्रक्रिया विधि में ही डाली जानी चाहिए)
संबंधित मुद्दे

 संबंधित मुद्दे