在 main 之外的方法中使用 print 语句是否更有效,或者它是否重要?

Is it more efficient to have a print statement in a method besides main or does it matter?

这可能是个愚蠢的问题,但我是从一本书中自学的,我注意到很多示例在 main 以外的方法中都有 print 语句。我想知道你把它放在哪里会不会有什么不同,所以当我想到这个问题时,我粘贴了我正在处理的程序。让 getArea 方法打印区域或将其保留在 main 中对我来说效率更高吗?

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

效率没有区别。这可以从一个函数无法找到调用它的其他函数这一事实中看出。它不可能以不同的方式表现。 (堆栈自省和内联除外...)

从架构上讲,最好尝试保持方法的纯净,因为如果不需要,它们不会引起副作用。这使得程序更容易理解。一个纯函数接受一些值和 returns 一个值而不改变任何其他东西。打印是一种副作用,因此请尽量将其排除在计算式函数之外。

打印操作是一个简单的日志记录功能,没有任何性能penalties/benefits。每当您编写代码时,您都可以问自己以下问题:

  • 此代码是否应由其他人使用? (不应插入日志记录)
  • 是否应使用应用程序日志调试此代码(应插入日志记录)
  • 您要打印的消息要说明什么? (要做的事情插在方法前,执行结果插在方法后,执行过程插在方法本身)