11

私はEclipseを使用しているので、//$FALL-THROUGH$コメントの使用はswitchステートメントなどの一般的な方法です。しかし、私の同僚はNetbeansを使用していて、私がこれらを使って一体何をしているのか疑問に思いました。そして、その中に記号が含まれているものをグーグルで検索しようとすることは、凍ったミトンのペアで歯を引っ張ろうとするようなものであり、道具はありません...

コメント、ドル記号などの使用は//$FALL-THROUGH$、標準のJavaのものですか、それともある種のEclipseの魔法ですか?同じコードをNetbeansまたは別のIDEにロードするか、スタンドアロンのJavaコンパイラで実行すると、コメントが付いているかどうかに関係なく、switchステートメントは警告でマークされたままになりますか?アノテーションを使用する以外にこれを行うための標準的な方法はあり@SupressWarningますか(それは、それをどのように使用する必要があるかを考えると、コードを単純に乱雑にするでしょう)?

4

3 に答える 3

12

このようなものはIDE/スタイルチェックツールに依存します。「標準のJavaコメント」はありません。

(まあ、Javadocは標準ですが、コンパイル/エラー報告を制御しません。)

構成の説明は、$FALL-THROUGH$Eclipseリリースのドキュメントに記載されています。

次のcaseステートメントの前に$FALL-THROUGH$で始まるコメントを付けることで、switchcaseステートメントで予想されるフォールスルーのコンパイラーの問題を抑制できるようになりました。これは、J2SE-5.0スタイルの@SuppressWarnings( "fallthrough")アノテーションを使用できないコードにとって特に興味深いものです。

アノテーションの警告名@Suppresswarningsはコンパイラに依存し、Java言語標準ではないことに注意してください。

于 2012-10-09T19:38:02.457 に答える
3

同様のコメントスキームを採用している他のツール(FindBugsなど)を見てきました。しかし、何も標準化されていません。

ほとんどの場合、これらの警告は、フォールスルーの前にcaseステートメントにコードが含まれている場合にのみスローされます。ほとんどの場合、一般的なコードを除外することでこれを回避できます。

たとえば、これは通常、警告をトリガーしません。

switch (foo) {
  case 1:
  case 2:
    doSomething();
    break;
  ...
}

しかし、これは次のようになります。

switch (foo) {
  case 1:
    doSomething();
  case 2:
    doSomethingElse();
    break;
  ...
}

個人的には警告があるのには理由があると思います。一般的なコードをリファクタリングし、空でないフォールスルーがない方が読みやすく(そして安全である)と思います。

switch (foo) {
  case 1:
    doSomething();
    doSomethingElse();
    break;

  case 2:
    doSomethingElse();
    break;
  ...
}
于 2012-10-09T19:44:59.317 に答える
2

このコメントはIDE固有のものであり、他のideチェッカーやコードチェッカーでは失敗する可能性がありますが、findbugsは、単語が含まれるコメントをチェックするのに十分賢いです。しかし、いずれにせよ、仲間のプログラマーに指示する以上のことをコメントに頼るべきではありません。維持するものをもう1つ作成しているだけです。

于 2012-10-09T19:54:43.533 に答える