때때로 나는 다음과 같은 코드를 볼 그대로두고 왜 : 그대로코멘트 매개 변수 이름보다는
는LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
왜 코멘트 매개 변수 이름보다는 그것을두고?
때때로 나는 다음과 같은 코드를 볼 그대로두고 왜 : 그대로코멘트 매개 변수 이름보다는
는LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
왜 코멘트 매개 변수 이름보다는 그것을두고?
내가 이것을하는 한 가지 이유는 다른 프로그래머에게 매개 변수를 사용하지 말라고 명시 적으로 말하고 의도에 대한 설명을 위해 주석에 남겨두기 때문입니다. 나는 이것이 의미가 없다는 것을 안다 지금, 그러나 위에 읽는. 당신은 몇 가지 여분의 물건을 할 B::foo()
원하는 위치
class A
{
public:
virtual void foo(int someProperty);
};
class B : public A
{
public:
virtual void foo(int /*someProperty*/);
};
이 특정 사건에 대한이 원하는 말, 다음 매개 변수
0
와
A::foo()
전화 :
나는 다른 예를 사용합니다. 동일한 함수 시그니처를 유지해야하므로 다형성이 작동하지만 B::foo()
안에 실제로 매개 변수를 사용하고 있지 않습니다. 앞으로도 사용하고 싶지 않습니다. 이것은 기본적으로 "이 방법의 논리는 someProperty에 종속되어서는 안됩니다"라고 말하는 의도입니다.. (당신이 어떤 hacking에 내려하지 않는 한)
B::foo(int/*someProperty*/)
{
//do some stuff
A::foo(0);
}
, 당신이 정말로 그것을 사용할 수 없습니다.그러나 주석이 달린 이름은 A::foo()
에 전달하는 매개 변수에 대해 알려줍니다. 'someProperty'는 A
입니다.
이제 구문에 동의하지 않지만 가능한 설명이 될 수 있습니다.
예제에서 호출 된 함수 (예 : OnPaint
)가 인수를 사용하지 않으면 인수 이름을 제공하지 않고 컴파일 할 때 사용되지 않는 인수에 대한 경고 메시지가 표시되지 않습니다.
일부 컴파일러는 인수를 주석 처리하거나 처음에 제공하지 않을 때 "사용되지 않은 인수 경고"를 발행하지 않습니다. 물론 올바른 서명이 있도록 유형을 남겨 두어야합니다.
매개 변수가 정말 필요하지 않은 경우, 당신은 그들에게 처음부터 거기에 왜 당신이 이해하지 않을 수 있습니다 첫눈에
당신이 그들을 이름없는 경우
를, 이름을 할 필요가 없습니다.이름을 지정하면 일부 컴파일러에서 사용하지 않은 매개 변수에 대해 경고합니다.
이름을 주석으로 남기는 것이 두 가지 접근 방법의 중간에 있습니다. 그게 내가 "unreferenced formal parameter"
컴파일러 경고를 방지하는 데 사용되는 인수 이름을 주석 본 onPaint()
의 정의의 시작 인 경우
(이러한 경고는 높은 경고 수준에서 마이크로 소프트 컴파일러 수준 -W4
나타납니다).
인수가 사용되지 않았을 때 '사용되지 않은 인수'경고를 발행 한 일부 컴파일러가 있다고 생각합니다.
특히 사용자가 보여준 것과 같은 메시지 처리기 기능에서 인수는 종종 작업을 수행하는 데 필요하지 않습니다. 따라서 인수 을 이름으로 주석 처리하면 경고를 제거 할 수 있습니다.
다른 한편으로는, 나중에 인수의 일부를 사용하고 싶다면, 이름을 가진 것이 유용하기 때문에, 주석 처리는 이름을 삭제하는 것보다 쉽습니다.
컴파일러는/w4로 설정하면 여전히 경고를 생성합니다. – Stefan
확인. 잘 모르겠습니다. 최근 C++ 프로젝트에서 항상 내 모든 주장을 사용했다. :) – MartinStettner
아마도 코드를 인수 한 사람은 함수 선언에서 매개 변수 이름이 필수는 아니라는 것을 알고 코드를 작성한 사람은이 사실을 알지 못했을 것입니다. 이는 단지 하나의 환경 설정에 불과합니다. –