2

コードのチャンクが2つあり、それらを切り替えたい場合(たとえば、テスト目的で)、次のようなコメントを使用できることに気付きました。

//*
<chunk #1, active code here>
//*/

/*
<chunk #2, commented out code here>
//*/

次に、それらを切り替えるには、/上記の#2を追加し、上記の#1からを削除する必要があり/ます。IDEに「togglecomment」コマンドがあることは知っていますが、これはより高速で面倒ではないと思います。

/*
<chunk #1, active code here>
//*/

//*
<chunk #2, commented out code here>
//*/

これは明らかに機能します。これは、行コメントが実際にコメントアウトされる/*ため、ブロックコメントが解析されないためです。また、//実際にコメントアウトされる最後の場合も同じです*/

私の質問は、コメントを使ってこのようなことをするより良い方法があるのか​​、それともこの方法がコメントで得られるのと同じくらい「洗練された」ものなのかということです。

4

3 に答える 3

8

まず、コードを切り替えるためにスラッシュとアスタリスクの不可解なシステムを使用するのは悪いことだと思いますが、とにかくこれを試してみましょう。

最初に選択されたブロック

//*
public static void doStuff()
{
    System.out.println("foo");
}
/*/
public static void doStuff()
{
    System.out.println("bar");
}
//*/

選択された2番目のブロック(唯一の変更は最初のスラッシュを削除することです):

/*
public static void doStuff()
{
    System.out.println("foo");
}
/*/
public static void doStuff()
{
    System.out.println("bar");
}
//*/

/*/すでに開いているコメントブロックがあったかどうかに応じて、コメントブロックを開いたり閉じたりするように機能する中央にあるため、これは機能します。

これは独自のアプローチに似ていますが、2つの文字を変更する代わりに、1つの文字だけを変更することで切り替えることができるという利点があります。ですから、それは悪になるためのもう少し効率的な方法です。

于 2012-08-02T22:18:53.760 に答える
2

1つの方法は次のようなものです。

public class DebugOptions {
  public static final boolean DEBUG_FLAG = true;
};

そして、関数内に次のようなコードを含めることができます。

if(DebugOptions.DEBUG_FLAG) {
  // Do some debugging stuff
} else {
  // Do something else
}

または、各クラスに独自のフラグを設定することもできますが、パターンは同じです。また、複数のフラグを設定したり、enumさまざまなレベルのデバッグサービスを提供したりすることもできます。

ブールフラグをfalseに設定すると、ほとんどのコンパイラは未実行のコードを最適化します。

于 2012-08-02T22:12:24.357 に答える
0

乱雑です、あなたのコードは読めません。IDE機能では、ホットキーを2回押す必要があります。1秒か2秒それは経済ではありません。

パラメータに応じて一度にメソッドの1つを実行できるラッパーメソッドを持つためのより良いデバッグアプローチ。

void debug(Mode m) {
  switch m : {
    case M1: method1();
    case M2: method2();
    ...
  }
}

コードで呼び出しますdebug(M1)。速度が本当に気になる場合は、1を2から変更するだけです。

于 2012-08-02T22:19:11.987 に答える