java - 为通常返回 void 的函数返回字符串是否被认为是不好的做法?

标签 java

class Main {

  public static int total = 5;

  public static void main(String[] args) {
    addToTotal(5);
    addToTotal(199);
    System.out.println(addToTotal(1));
  }

  public static String addToTotal(int amount){
    total += amount;
    return "Successfully added " + amount + " to total for result of " + total;
  }
}

例如,以这个增加类(class)总数的程序为例。它通常不需要 return 语句 - 但对我来说,让它返回发生的事情的字符串似乎有助于调试复杂的问题。这被认为是不好的做法吗?

最佳答案

是的,不好的做法。如果您想返回一个值并添加调试语句,会发生什么情况?你不能两者兼而有之。

即使未使用字符串连接,您也会受到性能影响。聪明的优化器也许能够优化它,但我不会指望它。

Parameterized logging是你应该使用的。它只会在实际需要时执行串联。 IMO 它也更具可读性。

public static void addToTotal(int amount){
    total += amount;
    log.trace("Successfully added {} to total for result of {}", amount, total);
}

关于java - 为通常返回 void 的函数返回字符串是否被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60081022/

相关文章:

java - 如何在另一个类而不是其父类(super class)中调用子类方法?

java - Java移位运算符0十六进制数

java - CardLayout - 不会切换回第一个面板

java - WebSphereExtendedJTATransactionLookup 和 WebSphereTransactionManagerLookup 之间的区别?

java - 当我不知道大小时初始化二维数组

java - 使用 Java 在 Windows 中截取前台应用程序屏幕截图,无需额外的边缘

java - append 到文件时如何关闭 JavaFX FileChooser 的覆盖警告?

java - 在端口 80 上尝试 https 时 tomcat8 处于 100% cpu

java.lang.reflect.InitationTargetException,由: java. lang.NoClassDefFoundError引起:com/fasterxml/jackson/databind/ObjectMapper

java - 如何在不出错的情况下将 String 解析为 BigDecimal