Dav*_*vid 1 java debugging logging coding-style
最近我发现自己编写了许多方法,我只能想到调用脚手架.这是一个例子:
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]) ;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种方法中,如果我将bug设置为true,无论从某种用户输入调用它,我都会得到特殊的调试文本,让我知道打印的字符串是什么索引,以防万一我需要知道为了我的调试(假装事态存在,它的帮助).
我的所有问题或多或少都归结为这个问题:这是一个好主意吗?但有点客观性:
这是测试我的方法并调试它们的有效方法吗?我的意思是在效率方面有效,而不是弄乱我的代码.
if
(bug) stuff ;在我的方法开始工作之后,将代码留在原地是否可以接受?(如果需要"可接受性"的定义来使这个问题成为目标,那么使用"不是一个关于编程争议的问题,例如if(boolean)
在它后面只用一行省略括号,尽管如果你有更好的东西继续使用你的定义我不介意)
是否有更有效的方法来完成调试比我正在做的更容易?
你知道我想要的任何东西,但我已经忘记了(尽可能多的信息被理解).
我不认为你的方式真的是一种很好的记录方式.
为什么?
它在运行时不可配置.它是为每个日志语句定制的并且是特定的.
还有什么?
您应该查看一些常见的日志记录实用程序 我所知道的最常见的是log4j.
所以你走了:http://logging.apache.org/log4j/
查看Simple Logging Facade for Java(slf4j).它包含了Log4j的功能.
slf4j允许您以固定的重要性记录每个语句,范围从低重要性DEBUG消息到中等重要性INFO消息,再到ERROR的关键内容.中间重要性水平也是如此.
您可以在运行时配置slf4j的重要性阈值.因此,当您只想要优先级最高的消息时,可以将阈值设置为ERROR,但是在测试时,将其设置为DEBUG.这意味着只需调整一些设置就可以看到不同程度的调试详细程度.您无需重新编译即可更改记录的语句.这是一场大胜利.
你现在正在做的基本上是slf4j log.debug("message").
还要考虑Java 断言.断言可帮助您在运行时保证程序内部状态的属性.
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |