编辑:我很想看看史蒂夫里德的AOP方法的反应.鼓励回答他的回答!
我是新手,在某些时候我意识到在程序执行期间知道变量的内容会很有帮助.所以我开始这样做:
编辑:修复此问题.曾经是:var +":"+ var,这是完全错误的.愚蠢的错字.
System.err.println ( "var: " + var );
Run Code Online (Sandbox Code Playgroud)
后来我才知道这是常见的做法.至少,调试器不可用或不需要的地方.
我使用基本的文本编辑器,每次需要调试变量时键入print语句都很烦人,所以我想,为什么不是这样的:
void dbug ( Object obj )
{
String variableName = obj.somehowGetVariableName();
String variableContents = obj.toString();
System.out.println ( variableName +": " + variableContents );
}
Run Code Online (Sandbox Code Playgroud)
但显然得到变量名称说起来容易做起来难.
我坚持:
System.err.println ( "var: " + var );
Run Code Online (Sandbox Code Playgroud)
或者有一个流行的速记版本?
我不会尝试编写任何花哨的方法来打印出调试信息.LOG.debug(...)
如果您使用记录器或System.err.println(...)
其他,请坚持使用.
您可能希望使用String.format("var=%s val=%s", "VarName", val)
而不是字符串连接.
确保覆盖toString
每个类中的方法以提供有意义的调试信息.
在一天结束时,通常更容易启动调试器并查看正在进行的操作,而不必跟踪已记录的调试行的负载.
我使用您的调试方法的唯一时间是,如果我的应用程序在地图中维护了所有状态,我可以轻松地打印出键值对(例如,Web应用程序中的会话映射).
看看Simple Logging Framework,它允许您输入:
class Example {
static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(Example.class);
void doSomething(Object obj1, Object obj2) {
LOG.debug("This is object 1: {}, and this is object 2: {}", obj1, obj2);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为System.err.format是你想要的:
System.err.format("var: %s\n", var);
Run Code Online (Sandbox Code Playgroud)
是以下的简写:
System.err.println(String.format("var: %s", var));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30394 次 |
最近记录: |