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

时间:2014-08-18 03:50:19

标签: 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.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()电话。

但是我不确定使用这样的方法是不错的做法,尤其是在调试模式下。我一直在考虑使用类似于泛型的东西,在那里我提供一种类型,而不仅仅指定Object(它感觉有风险)并依赖于toString()

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

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

有正确的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您编写的代码示例包含单个java文件,我建议您不要使用dbmg方法,只需明确使用System.our/System.err打印方法。使用自定义日志记录抽象可能会使示例代码复杂化不必要的细节。

但是,如果:

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

然后不要重新发明轮子,使用Logging框架。

相关问题