Java 将System.out.println放在单独的方法中好吗?

Java 将System.out.println放在单独的方法中好吗?,java,Java,我正在处理一段我觉得有点奇怪的代码。我正在处理的代码是导入实用程序的一部分,该实用程序获取CSV文件并将数据导入数据库 在代码中,我看到: ImportUtils.printf("Validation started"); 当我研究这个方法时,它只是调用System.out.println: public static void printf(String s) { System.out.println(s); } 这有什么好处吗?这可能会引起问题吗?我认为这可能是一件好事-这样,只

我正在处理一段我觉得有点奇怪的代码。我正在处理的代码是导入实用程序的一部分,该实用程序获取CSV文件并将数据导入数据库

在代码中,我看到:

ImportUtils.printf("Validation started");
当我研究这个方法时,它只是调用System.out.println:

public static void printf(String s) {
    System.out.println(s);
}

这有什么好处吗?这可能会引起问题吗?

我认为这可能是一件好事-这样,只要更改
ImportUtils.printf
方法的实现,您就可以随意写入任何缓冲区


有必要吗?我不知道,这可能有点过分,但这种封装在需要的时候往往会被证明是一种福音。

该方法的名称
printf
不好,因为
printf
代表打印格式,而这种方法没有程序员所知道的任何功能


另一方面,通过允许日志记录方法在将来得到增强和更新而无需更改底层代码,这种间接方法可能很有用。我不会把它称为printf,而不是Java,但这看起来像是一个典型的“你可以用任何语言编写Fortran”的例子,这个例子是C


我看到的唯一优势是让C程序员在API中领先一步。如果该方法被称为“DisplayText”或相关的东西,我可以看到它有一些价值

强迫性脱钩的典型例子。完全没有意义,因为若你们真的想要System.out在其他地方写,你们可以自由使用。如果您需要更多的灵活性,就不需要日志框架的选择。

而不是创建一个简单的系统。Out.PrtLn包装器考虑切换到一个完整的日志API。有许多可用的(、和更多)。这些可以很容易地配置为控制台周围的简单包装,对于初始开发非常有用。今后,这些可以修改为写入文件、发送电子邮件、写入数据库。。。这些还提供了非常有用的上下文信息(比如哪个类正在生成日志),这让您自己很痛苦。

我认为有人试图变得聪明,使其易于在开发周期的后期更改为日志框架或其他内容

问题是,此时您将调用更改为system.out。对于日志框架,所有日志调用都来自同一个类和同一个函数,它们都具有相同的优先级。这意味着您失去了记录器自动提供的许多有用功能。比如看哪个类写了日志消息。将调试器设置为更高的日志级别,以仅获取最重要的消息等


所以我建议不要这样做。从system.out快速更改看起来是个不错的主意。到记录器或更复杂的东西,但从长远来看,这没有帮助。

我还发现他们在代码中也使用System.out.println。因此,您将看到ImportUtils.printf和System.out.println大约相隔40行。我只是想补充一下……啊,但是既然所有东西都调用这个方法,那么调用
System.out.printf
就很简单了(并添加varargs)。@mmyers很好,但我仍然认为给一个通用方法指定一个与专门化相关的非常具体的名称是个坏主意。+1,非常好的建议。使用System.out将您与控制台的使用紧密地联系在一起。如果你愿意,使用日志框架可以让你变得超级灵活。是的,只是有人试图变得太聪明,在这个过程中制造潜在的bug。首先,方法名称错误-printf()而不是println()。另外,由于两个版本一起使用,可能会有人试图更改实现,从而导致一些代码更改,而另一个则不会。