2012-10-09 5 views
9

私はEclipseを使用していますので、//$FALL-THROUGH$のコメントは、switch文などの一般的なコメントです。しかし、私の同僚はNetbeansを使い、私がこれらで何をやっているのか疑問を呈しました。それにシンボルが付いたGoogleに何かをしようとすると、凍結したミトンと工具を使わずに歯を抜くようなものです...

//$FALL-THROUGH$コメント、ドル記号、すべて、標準的なJavaもの、 Eclipseの魔法のようなもの? Netbeansや他のIDEで同じコードを読み込んだり、スタンドアロンのJavaコンパイラで実行したりすると、switch文が落としてしまいます。 @SupressWarning注釈を使用する以外に、これを行う標準的な方法はですか(これはコードを使用する必要があるため、コードが複雑になります)。

+0

このコメントの内容の例を挙げることができますか? – RNJ

答えて

10

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

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

$FALL-THROUGH$構造の説明は日食release documentationに記載されている:

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

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

+0

私は尋ねると思った。最終的な答え:それはEclipseの魔法です。わーい。 :j – Tustin2121

3

同様のコメントスキームを採用している他のツール(例:FindBugs)があります。しかし、何も標準化されていない。

ほとんどの場合、ケースステートメントに転倒前のコードが含まれている場合にのみ、これらの警告がスローされます。ほとんどの場合、共通コードを抽出することでこれを回避できます。例えば

これは通常、警告トリガされません。

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

をしかし、この希望:

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

は、私は個人的に警告が理由であると思います。 FindBugsのがスマートですが、

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

    case 2: 
    doSomethingElse(); 
    break; 
    ... 
} 
+0

私はフォールスルーの警告の原因を知っています(実際には、警告はデフォルトでオフになっています)。どちらにせよ、私が上記のことを知らない人は+1。(また、私は多くの方法、特に1つの方法で一度だけ使用される方法で私のコードを乱雑にするよりもフォールススルーを使用することを好む。) – Tustin2121

+0

それは味の問題です、私はあなたが間違っていると正確に宣言することはできません。プログラマーが間違って行うことができる多くのことのうち、警告するものとして選択されたことを心に留めておくことをお勧めします。あなたが他の人のコードを維持しているときには、caseステートメントのコードの塊の後に「休憩」が存在するかどうかは不明です。 –

+1

C#では、これらの種類のフォールスルーはバグの可能性が高いため許可されていません(何らかのステートメントの前に複数の場合のみ) –

2

このコメントは、特定のIDEであり、他のIDEとコードチェッカーで失敗することがあります。私は、共通のコードをリファクタリングすることが、より読みやすい(かつ安全な)検討し、何の非空フォールスルーを持っていませんそれらの単語の落ち込みでコメントを確認するのに十分です。しかし、いずれの場合でも、仲間のプログラマーを指示するだけではなく、コメントを頼りにするべきではありません。

関連する問題