最近我发现自己编写了很多方法,我只能将其称为调试脚手架。这是一个例子:
public static void printArray (String[] array, boolean bug)
{
for (int i = 0; i<array.lenght; i++)
{
if (bug) System.out.print (i) ; //this line is what i'm calling the debugging scaffolding i guess.
System.out.println(array[i]) ;
}
}
在这种方法中,如果我将 bug 设置为 true,无论它是从哪里调用的,可能是由某种用户输入调用的,那么我都会得到特殊的调试文本,让我知道正在打印的字符串的索引是什么,以备不时之需为了我的调试而知道(假装存在有用的事态)。
我所有的问题或多或少都归结为一个问题:这是个好主意吗?但更客观一点:
这是测试我的能力的有效方法吗 方法并调试它们?我的意思是在效率方面有效,而不是搞乱我的代码。
是否可以接受留下
if (bug) stuff ;
之后的代码 我有我的方法和工作? (如果“可接受性”的定义 需要提出这个问题 目标然后使用“不是问题 编程争议,例如 在if(boolean)
中省略括号 虽然后面只有一行 如果你有更好的选择 提前使用你的定义我不会 记)有没有更有效的方法 完成制作的目标 调试比我正在做的更容易?
任何你知道的我想问的,但是 我也忘记了(尽可能多 有意义的信息是 感谢)。
最佳答案
查看 Simple Logging Facade for Java (slf4j) .它包含 Log4j 的功能。
slf4j 允许您以固定的重要性记录每个语句,范围从低重要性 DEBUG 消息到中等重要性 INFO 消息,再到带有 ERROR 的关键信息。也有中等重要性级别。
您在运行时配置 slf4j 的重要性阈值。因此,当您只需要最高优先级的消息时,可以将阈值设置为 ERROR,但在测试时,将其设置为 DEBUG。这意味着您可以通过调整一些设置来查看不同程度的调试详细程度。您不必重新编译即可更改记录哪些语句。这是一个巨大的胜利。
你现在所做的基本上是 slf4j 的 log.debug("message")
。
同时考虑 Java assertions .断言可帮助您在运行时保证程序内部状态的属性。
关于java - 特殊调试线(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702866/