java - 特殊调试线(java)

标签 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]) ; 
    }
}

在这种方法中,如果我将 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/

相关文章:

java - 将java中的字符串拆分为固定长度的 block

kotlin - 如何让 kotlin-logging (MicroUtils) 打印到子类名称而不是抽象类名称?

.net - .NET 中的高性能日志记录

c++ - 多文件后端和严重性

Java:单击容器中的每个 JButton

java - 滚动时出现惰性列表适配器问题

java - 开发 eclipse 插件来解析 java 程序的程序

iphone - 取消引用空指针,警告

c++ - 调试到 MFC header 代码不适用于 Visual Studio 2019

c++ - shared_ptrs 的 unordered_map 破坏了 C++ 程序