Java的printf()是一种不好的做法吗?

时间:2012-03-06 15:46:21

标签: java formatting printf

  

可能重复:
  Advantages and Disadvantages of using System.out.printf();

在一个在线论坛的讨论中,我被告知使用printf方法(如System.out.printf()中)是一种不好的做法,我应该使用println代替,尽管用户无法给出明确的解释,这是“他被告知”的事情。这是真的吗?

4 个答案:

答案 0 :(得分:2)

如果您需要 printf的格式化功能,那么毫无疑问,因为println不是可接受的选择。

另一方面,如果您只输出一个普通字符串,例如:

System.out.printf("All work completed.\n");

那么使用println来实现这一目标会更为规范。在程序正确性方面它并不重要 - printf可能略微运行起来更加昂贵,但实际上这并不重要。

但是,我确实看到了一些使用printf进行简单输出的示例代码,我承认我发现它令人困惑。因此,我坚持println仅仅因为这个原因,它将使您的代码更熟悉,更容易理解其他开发人员。

(ETA:即使现在回顾我自己的帖子,我本能地认为代码示例是错误的,并希望将其更正为println。所以我的早期观点肯定仍然存在。)

答案 1 :(得分:1)

printf可以执行println无法执行的操作,因此说总是使用println而不是printf显然不会有道理。

对于那些不知道printf控制字符串中使用的格式说明符的人来说,他们可能很难阅读 - 这可能是你谈过的人建议你不要使用{{1}的原因}。

下次有一些更一般的建议:记住有很多人会很乐意给你建议,尽管不知道他们在谈论什么,甚至在那些知道他们是什么的人中间我在说,有很多关于编程的意见,因为有程序员。因此,你应该从不采取任何福音,因为有人告诉你或因为你在书中读到它。 始终尝试了解建议的原因,并记住每个规则都有例外。理解你在设计或实施一个程序时做出的每一个决定几乎都有利有弊,所以通常没有一个选项无条件地“正确”; 必须利用自己的经验和判断来确定在当前情况下做事的“正确”方式,即使在其他大多数情况下它可能是“错误的”例。

答案 2 :(得分:1)

不,这不是真的。

我能想到的唯一可能的理由是printf格式字符串中的文字\n和/或\n将生成特定于平台的换行符...是一个可移植性问题。但简单的解决方案是在格式字符串中使用%n

当然,当没有参数需要替换为格式字符串时使用printf不是最佳的。我不会说这会使它成为糟糕的做法。

答案 3 :(得分:0)

如果您正在进行调试日志记录,那么使用其中任何一个都是“不好”的做法。

如果是这种情况,使用适当的日志框架是“最佳”做法。 Java有很多选择。