Java 在短代码示例的快速调试中替换System.err.println

Java 在短代码示例的快速调试中替换System.err.println,java,debugging,Java,Debugging,我必须编写简短的代码示例,对于这些示例,使用IDE是过分的;我使用Gedit。出于调试目的,我一直在使用快速方法dbgm。一些谷歌搜索也提出了类似的建议: import java.util.Scanner; public class Tyle { public Tyle() { } /** * @param debugmessage * This method takes any debugmessage and prints the string version * to System.

我必须编写简短的代码示例,对于这些示例,使用IDE是过分的;我使用Gedit。出于调试目的,我一直在使用快速方法
dbgm
。一些谷歌搜索也提出了类似的建议:

import java.util.Scanner;

public class Tyle {

public Tyle() {
}

/**
* @param debugmessage
* This method takes any debugmessage and prints the string version
* to System.err.println
*/
private static void dbgm(Object debugmessage) {
    System.err.println(debugmessage.toString());
}

/**
* @param number
*/
public static int cube(int i) {
    int cube;
    cube=i*i*i;
    dbgm(cube); //debug message
    return cube;
}

public static void main(String [] args){
    System.out.print("Enter number: ");
    Scanner s = new Scanner(System.in);
    int inp = s.nextInt();
    Tyle.cube(inp);
    s.close();
}
}
这有它的优点,我可以搜索
dbgm
,而不需要任何真正的
System.out.println()
调用

但我完全不确定使用这样的方法是否是好的实践,尤其是在调试模式下。我一直在考虑使用类似于泛型的东西,在这里我提供了一个类型,而不仅仅是指定
对象
(感觉有风险)并依赖于
toString()

在这个简单的例子中,我可以使用
assert
,但在用户研究过程中可能会出现更复杂的情况。例如,如果
number
基于用户输入。在某些情况下,我试图快速检查某些参数是否给出了预期值

有没有一种方法可以安全地编写
dbgm
方法的变体,在这里我可以获得适当的描述符,特别是如果它是一个自定义对象?我希望在一种“生产”环境中继续重用解决方案


有没有正确的方法?

如果您正在编写的代码示例由单个java文件组成,我建议不要使用
dbmg
方法,只显式使用
System.our/System.err
打印方法。使用自定义日志抽象可能会使示例代码复杂化,并带有不必要的细节

但是,如果:

  • 其他人将在其他项目中使用您的代码示例
  • 您编写的示例最终将投入生产
  • 您的代码示例捆绑在一个项目中(使用多个文件和依赖关系管理)

然后,不要重新发明轮子,使用日志框架

为什么不使用像或这样的实际日志框架呢?您认为这其中的哪一部分对于小代码来说可能不是好的实践?@Mike'Pomax'Kamermans 1。使用一个自定义方法作为调试接收器似乎是合乎逻辑的,而不是写长行(DRY)。2.它实际上使我的代码更具可读性。
dbgm
可以是一个标记。@ElliottFrisch:具体来说,我并不需要非常详细的日志记录。@CoriolisForce我可能会使用sine,它允许您在部署时选择实现。