如果我有两个代码块并且我想在它们之间切换(例如,出于测试目的),我意识到你可以使用这样的注释:
//*
<chunk #1, active code here>
//*/
/*
<chunk #2, commented out code here>
//*/
然后要在它们之间切换,我只需要在#2上方添加/
并从#1上方删除/
。我知道IDE有“切换注释”命令,但我认为这更快,更不凌乱。
/*
<chunk #1, active code here>
//*/
//*
<chunk #2, commented out code here>
//*/
这显然有效,因为行注释实际上会注释掉/*
,因此不会解析块注释,而//
实际注释掉*/
的结尾也是如此
我的问题是,是否有更好的方法可以通过评论来做这样的事情,或者这种方法是否像评论一样“光滑”?
答案 0 :(得分:7)
首先让我说,我认为使用深浅的斜线和星号来切换代码是邪恶的,但不管怎样我们都试试这个。
选择第一个区块
//*
public static void doStuff()
{
System.out.println("foo");
}
/*/
public static void doStuff()
{
System.out.println("bar");
}
//*/
选择第二个块(唯一的更改是删除第一个斜杠):
/*
public static void doStuff()
{
System.out.println("foo");
}
/*/
public static void doStuff()
{
System.out.println("bar");
}
//*/
它的工作原理是因为中间的/*/
在打开或关闭注释块时起作用,具体取决于是否有已打开的注释块。
它类似于您自己的方法,但优点是您可以通过仅更改单个字符而不必更改两个字符来切换。所以这是一种更有效的邪恶方式。
答案 1 :(得分:2)
一种方式是这样的:
public class DebugOptions {
public static final boolean DEBUG_FLAG = true;
};
然后在你的函数中,你可以得到如下代码:
if(DebugOptions.DEBUG_FLAG) {
// Do some debugging stuff
} else {
// Do something else
}
或者,每个类都可以有自己的标志,但模式是相同的。此外,您可能希望有多个标志或enum
来提供不同级别的调试服务。
当您将布尔标志设置为false时,大多数编译器将优化掉任何未执行的代码。
答案 2 :(得分:0)
凌乱,你的代码是不可读的。使用IDE功能,需要按两次热键。 1或2秒,这不是经济。
更好的调试方法,使用包装方法,允许根据参数随时处理其中一个方法。
void debug(Mode m) {
switch m : {
case M1: method1();
case M2: method2();
...
}
}
在代码debug(M1)
中调用它。
如果你真的关心速度,你只需要从2改变1。