有没有更好的方法来切换评论代码?

时间:2012-08-02 22:07:32

标签: java comments line toggle block

如果我有两个代码块并且我想在它们之间切换(例如,出于测试目的),我意识到你可以使用这样的注释:

//*
<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>
//*/

这显然有效,因为行注释实际上会注释掉/*,因此不会解析块注释,而//实际注释掉*/的结尾也是如此

我的问题是,是否有更好的方法可以通过评论来做这样的事情,或者这种方法是否像评论一样“光滑”?

3 个答案:

答案 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。