나는 다음 두 선언의 차이점은 내가 모두 건너 이러한 스타일 기능 프로토 타입은
void some_method(int);
두 번째 스타일 한 헤더 파일에 무엇인지 알고 싶어 파일 :
void some_method(int a);
하나의 스타일이 다른 스타일보다 이점이 있습니까? 내게는 하나의 스타일은 변수의 이름을 가지고 있지 않으며 변수의 이름은 동반 된 cpp 파일에서 구현되어야한다.
나는 다음 두 선언의 차이점은 내가 모두 건너 이러한 스타일 기능 프로토 타입은
void some_method(int);
두 번째 스타일 한 헤더 파일에 무엇인지 알고 싶어 파일 :
void some_method(int a);
하나의 스타일이 다른 스타일보다 이점이 있습니까? 내게는 하나의 스타일은 변수의 이름을 가지고 있지 않으며 변수의 이름은 동반 된 cpp 파일에서 구현되어야한다.
이 기능에는 차이가 없지만, 나는 종종과 같이, 문서의 형태로 매개 변수 이름을 사용 : 내가 추가 할 가치가 아무것도없는 경우
void verbTheThing(int verbId, int thingId);
, 나는 그냥 추가하지 않습니다
를int max(int, int);
주 관심사는 일관성입니다. 하나 고르고 그것에 충실하십시오. 필자는 매개 변수 이름이 기능 및 코드를 설명 할 수 있기 때문에 개인적으로 두 번째 방법을 선호합니다. 이는 자체 문서화가 대안보다 낫습니다.
+1; 나는 보통 디폴트와 삭제 된 특수 함수에 대한 예외를 만든다. –
주요 차이점은 가독성입니다. 두 번째 버전은 더 길지만 인수의 이름을 갖는 것이 실제 도움이 될 수 있습니다. 작은 예 :
int move(int, int, int, int);
int move (int fromX, int fromY, int toX, int toY);
두 가지 모두 컴파일과 관련하여 차이가 없습니다. 그러나 매개 변수의 이름을 지정하면 코드의 가독성이 높아져 사람들이 더 잘 이해할 수있게되므로 두 번째 옵션이 더 좋습니다.
두 옵션 모두 유효합니다. 그러나 헤더에 매개 변수 이름을 지정하면 함수 서명을 읽는 사람이 실제로 수행하는 작업과 매개 변수가 나타내는 데이터를 빠르게 파악하는 데 큰 도움이됩니다.
(
대괄호를 입력하면 일부 개발 환경 (Visual Studio, Borland C++ Builder, 예를 들어 이클립스에는이 기능이 있어야 함)이 자동으로 함수 인수를 나열합니다. 그 십오 들어
그들이 문서의 역할을하기 때문에 확인 (헤더 내에서) 그 함수 인수의 이름은 가능한 한 설명입니다 수 있도록하는 것이 일반적인 예의입니다.
프로그래머에게이 기능이있는 IDE가 없더라도 (헤더의) 전달 함수 선언은 항상 가능한 한 서술 적이어야합니다. 같은 이유로 - 머리글을 열고 더 많은 숫자의 함수 본문을 찾기 위해 매개 변수가 의미하는 바를 읽는 것이 더 쉽습니다.
일부 기능에서는 매개 변수 이름없이 어떤 매개 변수를 의미하는지 알 수 없습니다.
Image::blitRect(int, int, int, int);
은 물론
Image::blitRect(int x1, int x2, int y1, int y2);
Image::blitRect(int x1, int y1, int x2, int y2);
Image::blitRect(int x, int y, int width, int height);
될 수 있습니다 예를 들어
,이 상황에서 포인트 및 크기에 대한 클래스를 추가,하지만 그건 또 다른 이야기 것 C++ 프로그래머.
실제로 차이점은 없습니다. 그것은 당신의 메소드 선언 위치로 귀결됩니다 ... 예를 들어, "main()"func 전에 함수를 선언 할 때. 아마도 매개 변수 이름을 신경 쓸 필요가 없을 것입니다. 그러나 앞에 메서드 선언을 사용하여 매개 변수 이름을 정의해야합니다. 코드 스타일을 사용하면 코드를 읽을 수 있습니다.
선언과 정의를 동일하게 유지하는 워크 플로우 이점이 있습니다. 다음 중 하나를 쉽게 복사하여 붙여 넣을 수 있습니다. 선언을 위해 더 짧은 양식을 사용하십시오. –
감사합니다. – MistyD
@PaulR 좋은 지적. 필자는 헤더 파일에 프로토 타입을 넣을 때 의미가없는 (잠재적으로 혼란스럽게하는) 매개 변수 이름을 제거하기 위해 노력한다고 말했을 수도 있습니다. –