2012-02-07 8 views
5

あるとして時々私は、このようなコードを参照してくださいそれを残す:なぜコメントのパラメータ名ではなく、それが

LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/) 

なぜパラメータ名をコメントするのではなく、それがあるとしてそれを残しますか?

+1

おそらくコードを引き継いだ人は、関数宣言でパラメータ名が必須ではなく、コードを書いた人がこの事実を認識していないことを知っているでしょう。 –

答えて

6

これを行う理由の1つは、他のプログラマに明示的にパラメータを使用しないように伝えたいが、意図の説明のためにコメントに残すことです。私はこれが意味をなさないことを知っていますが読んでいます。

私は別の例を使用します:

class A 
{ 
public: 
    virtual void foo(int someProperty); 
}; 

class B : public A 
{ 
public: 
    virtual void foo(int /*someProperty*/); 
}; 

はあなたがB::foo()は、いくつかの余分なものをしたい特定のケースのためにこれをしたいと言う、その後、パラメータ0A::foo()を呼び出します。同じファンクションシグネチャを保持する必要があるため、多態性は機能しますが、B::foo()の中では、実際にパラメータを使用していません。あなたは将来それを使用したくもありません。基本的には、"このメソッドのロジックはsomePropertyに依存してはいけません"と言う意図の文です。 (あなたには、いくつかのhackingに降りていない限り)

コメントアウトパラメータ名で
B::foo(int/*someProperty*/) 
{ 
    //do some stuff 
    A::foo(0); 
} 

、あなたが実際にそれを使用することはできません。しかしコメントされた名前はA::foo()に渡すパラメータについて何かを伝えます - その 'someProperty'はAからです。

ここでは構文に同意しませんが、これは考えられる説明です。

0

呼び出された関数(例ではOnPaint)が引数を使用しない場合、引数名を指定しないでコンパイルすると、コーダーは未使用の引数に関する警告メッセージを表示しなくなります。

0

一部のコンパイラでは、引数をコメントにするか、最初に指定しないと「未使用の引数の警告」が発行されない場合があります。もちろん、型を残して正しい署名を残す必要があります。

3

パラメータが本当に必要されていない場合は、あなたがそれらに名前を付けていない場合、あなたは彼らが最初の場所である理由を一目見ただけで、あなたが理解していない可能性が、彼らに

に名前を付ける必要はありません。

名前を付けると、未使用のパラメータについて警告するコンパイラがあります。

名前をコメントとして残すことは、2つのアプローチの中間にあります。それは私が"unreferenced formal parameter"コンパイラの警告を回避するために使用引数名をコメントアウト見ているonPaint()の定義の始まりである場合

2

(これらの警告は、高い警告レベルで、Microsoftのコンパイラのレベル-W4表示されます)。

10

引数が使用されていないときに、「引数が使用されていません」という警告が出されたコンパイラがあると思います。

特に、表示したようなメッセージハンドラ関数では、タスクを実行するために引数が必要でないことがよくあります。したがって、引数の名前をに書き出すことで、警告を取り除くことができます。

一方、後で引数のいくつかを使いたい場合は、名前を手元に置くと便利です。名前を削除するだけではなく、コメントアウトする方が簡単です。

+0

コンパイラは/ w4に設定されても警告を生成し続けます – Stefan

+0

Ok、わかりませんでした。最近のC++プロジェクトで私は常に私の議論をすべて使いました:) – MartinStettner

関連する問題